【问题标题】:NSDateFormatter seems to have the wrong monthNSDateFormatter 似乎有错误的月份
【发布时间】:2012-02-13 20:38:58
【问题描述】:

我有这段代码要阅读 ISO 8601 日期/时间规范。问题是由于某种原因,这个月不起作用。每次我转换它的月份都是“01”。我做错了什么?

NSDateFormatter *UTCDateFormat = [[NSDateFormatter alloc] init];
[UTCDateFormat setDateFormat:@"yyyy-MM-DD'T'HH:mm:ss'Z'"];
[UTCDateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[UTCDateFormat setCalendar:[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]];
[UTCDateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
NSLog(@"%@", [UTCDateFormat dateFromString:dateString]);

因此,例如,如果 dateString 是:

@"2002-03-12T21:13:27Z" 

我的输出是:

2002-01-12 21:13:27 +0000

我已经尝试过的事情:

  • 已将 MM 更改为 LL
  • 尝试不使用 setCalendar/setLocale
  • 尝试使用 ' 围绕 -
  • 将 MM 的位置切换到其他地方。它永远不会改变任何东西。
  • 遍及 SO,它似乎对其他人都有效。

【问题讨论】:

  • 这可能不会改变任何东西,但我认为DD 格式说明符应该是dd

标签: objective-c nsdateformatter iso8601


【解决方案1】:

试试这个

    [UTCDateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];

DD 是“一年中的一天”而不是“一个月中的一天”。查找 NSDateFormatter 格式的一个很好的来源是 this table

【讨论】:

  • 哇...那么为什么 DD 会阻止 MM 工作呢?似乎不应该发生这种情况。不过非常感谢!
  • '这张桌子'太棒了!那应该是 Apple 文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2021-04-20
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
相关资源
最近更新 更多