NSDateFormatter似乎有错误的月份

Kiv*_*olf 5 objective-c iso8601 nsdateformatter

我有这个代码块来读取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]);
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果dateString是:

@"2002-03-12T21:13:27Z" 
Run Code Online (Sandbox Code Playgroud)

我的输出是:

2002-01-12 21:13:27 +0000
Run Code Online (Sandbox Code Playgroud)

我已经尝试过的事情:

  • 将MM更改为LL
  • 没有setCalendar/setLocale尝试
  • 试过'围绕 -
  • MM转换到其他地方的位置.它从不改变任何东西.
  • 看着所有的SO,它似乎适用于其他所有人.

MGA*_*MGA 18

试试这个

    [UTCDateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
Run Code Online (Sandbox Code Playgroud)

DD是"一年中的一天"而不是"一个月的日子".此表是查找NSDateFormatter格式的一个很好的来源

  • 哇...那到底为什么DD要阻止MM工作呢?似乎不应该发生这种情况。但非常感谢! (2认同)