【问题标题】:NSDateFormatter- stringFromDate not returning AM/PMNSDateFormatter-stringFromDate 不返回 AM/PM
【发布时间】:2015-05-22 10:59:22
【问题描述】:
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"hh:mm:ss a"];
    NSLog(@"Today's Time: %@", [formatter stringFromDate:[NSDate date]]);

上面的代码只是给出了以下输出Today's Time: 15:46:43 我希望输出为Today's Time: 3:46 PM。 我上网了很多,但我没有找到显示 AM/PM 的方法。如果有人可以帮助我找到出路,那将非常有帮助。 我正在使用 XCode 6.3,并且我的设备中安装了 iOS 8.3。

【问题讨论】:

标签: ios datetime nsdate nsdateformatter date-format


【解决方案1】:

24 小时检查您的设备设置。如果已打开,请将其关闭。

您的代码非常好。我得到如下所示的输出: 今日时间:04:31:58 PM

如果您不想显示秒数,请使用以下代码:

[formatter setDateFormat:@"hh:mm a"];

【讨论】:

  • 我怎么错过了!谢谢你。是的,是我的设备设置造成了这个问题。非常感谢。
  • @ManjuBasha 欢迎 :)
【解决方案2】:

HH:24 小时制

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:locale];
[formatter setDateFormat:@"HH:mm a"];

输出

 Today's Time: 16:42 PM

hh:12 小时制

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:locale];
[formatter setDateFormat:@"hh:mm a"];

输出

 Today's Time: 04:43 PM

【讨论】:

  • 谢谢。 setLocale 对我来说是关键。
【解决方案3】:

试试这个

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"hh:mm a"];
    [dateFormatter setLocale:[[NSLocale alloc]  initWithLocaleIdentifier:@"en_US_POSIX"]];
    NSString *stringFromTime = [dateFormatter stringFromDate:[NSDate date]];

【讨论】:

    【解决方案4】:

    将设备时间的时间格式更改为 12 小时格式,而不是 24 小时格式。您无法以 24 小时时间格式获取 am pm。

    今天时间:15:46:43

    【讨论】:

      【解决方案5】:

      试试

      NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
      [formatter setDateFormat:@"hh:mm a"];
      NSLog(@"Today's Time: %@", [formatter stringFromDate:[NSDate date]]);
      

      【讨论】:

      • 它以 24Hr 格式 + AM/PM (Today's Date and Time: 16:40 PM) 给出了一个荒谬的答案。我想要 12 小时制的。我试过@"hh:mm a",它只返回Today's Date and Time: 16:38
      • "HH" 它将以 24Hr 格式返回时间,"hh" 以 12Hr 格式返回
      【解决方案6】:

      您可以轻松地将时间转换为 24 小时格式。

      试试这个代码,它对我来说很好用。

              func convertTime(_ dateAsString : String) -> String{
                   let dateFormatter = DateFormatter()
                   dateFormatter.dateFormat = "h:mm:ss " // "h:mm:ss a"
                   let date = dateFormatter.date(from: dateAsString)
      
                   dateFormatter.dateFormat = "HH:mm a"
                   let date24 = dateFormatter.string(from: date!)
                   print(date24)
                   return date24
                }
      

      【讨论】:

      • 为什么可以一次完成的事情要进行两次转换?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 2022-01-19
      相关资源
      最近更新 更多