【问题标题】:iOS time in 24 hours formatiOS 时间采用 24 小时格式
【发布时间】:2023-03-12 22:46:02
【问题描述】:

我想获取当前时间并将其解析为24 hours 格式的String,例如13:30

这是我的代码:

NSDate *date = [NSDate date];
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"HH:mm"];
NSString *timeString = [formatter stringFromDate:date];

它适用于iOS simulator,但在我的iPad 上我得到3:30 PM

我玩过不同的formats,但结果还是一样。

知道为什么吗?

提前致谢。

【问题讨论】:

    标签: ios date time nsdate nsdateformatter


    【解决方案1】:

    问题是用户的本地设置为 12 小时格式。将本地设置为 en_US_POSIX 以覆盖用户的设置。

    dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    

    【讨论】:

    • 感谢@zaph,它有效。关于@neuhaus 答案,我已将您的答案更改为formatter.locale = [NSLocale currentLocale];,它也有效
    • 没错,这个已知的错误是described by Apple:“时间的表示可能是 13:00。然而,在 iOS 中,如果用户将 24-Hour Time 设置为 Off,则时间可能下午 1:00。”。
    【解决方案2】:

    您需要将区域设置显式设置为 24 小时制。

    有关如何为NSDateFormatter 设置区域设置的详细信息,请参阅NSDateFormatter Locale

    注意@mtb 对该问题的回答。它解释了如何不使用语言环境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 2013-01-19
      • 1970-01-01
      相关资源
      最近更新 更多