我已经把头撞了太久了!我有一个字符串:2012-09-27T18:00:00.000-04:00 我有一个格式:[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"]; 我得到一个空结果转换字符串。有人可以帮助正确的日期格式吗?
问问题
927 次
1 回答
5
根据 NSDateFormatter 的文档:
格式字符串使用 Unicode 技术标准 #35 中的格式模式。标准的版本随操作系统的发布而变化:
OS X v10.8 和 iOS 6.0 中的格式化程序使用 [版本 tr35-25]。
按照该链接:
s 1..2 12 秒。使用一个或两个进行零填充。
换句话说,s
for seconds 只意味着不可分割的部分。
但就在其下方,有:
S 1..n 3456 小数秒 - 截断(与其他时间字段一样)到字母数。(示例显示使用模式 SSSS 显示秒值 12.34567)
然后,您不匹配时区的原因是您引用了Z
,因此它匹配文字Z
而不是时区格式。
为了匹配您看到的 ISO8601 时区格式,相同的文档说您需要 ZZZZZ。
所以,看起来,至少对于 10.8/iOS 6,你想要:
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'.'SSSZZZZZ"]
对于早期版本,您已经获得了文档的链接;你现在应该可以弄清楚了。
对此进行测试(在 Python 中,以节省几行代码):
>>> import Cocoa
>>> df = Cocoa.NSDateFormatter.alloc().init()
>>> df.setDateFormat_("yyyy-MM-dd'T'HH:mm:ss'.'SSSZZZZZ")
>>> print df.dateFromString_(2012-09-27T18:00:00.000-04:00')
2012-09-27 22:00:00 +0000
于 2012-09-21T00:55:41.257 回答