【问题标题】:NSDateFormatter Can't format date [duplicate]NSDateFormatter 无法格式化日期 [重复]
【发布时间】:2013-10-27 16:31:18
【问题描述】:

我已经尝试并尝试过研究并再次尝试,但我无法格式化此

日期是: “2013-08-08T11:10:09-07:00”

我尝试使用 "yyyy'-'MM'-'DD'T'HH':'mm':'ssZ" 和许多不同的排列,但无济于事。我认为服务器发送的时区格式可能不正确。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy'-'MM'-'DD'T'HH':'mm':'ssZ"];

return [dateFormatter dateFromString:[dictionary objectForKey:key]];

有什么线索吗?

提前致谢

【问题讨论】:

标签: ios objective-c nsdateformatter


【解决方案1】:

对于您正在使用的非本地化 ISO 偏移量(例如 -07:00),您需要在格式中使用 5 个 Z 字符。因此,对于给定的源数据,正确的格式字符串是:

yyyy-MM-dd'T'HH:mm:ssZZZZZ

虽然当前使用的技术标准不需要转义日期和时间分隔符,正如 Jeff 在 cmets 中提到的那样,这样做可能不是一个坏主意,特别是如果您的源日期来自服务器或其他东西.有关于进行这些替换的讨论,比如字母,这将改变特定于语言环境的日期和时间分隔符。从技术角度逃避它们也没有什么坏处,只是更难阅读:

yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ

有关更多信息,当前的日期格式化程序基于 Unicode Technical Spec #35。 #35 的日期和时间模式规范可以在http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2014-11-13
    • 2012-08-16
    • 1970-01-01
    相关资源
    最近更新 更多