NSDateFormatter没有格式化(返回nil)

0xS*_*ina 0 cocoa-touch objective-c nsdateformatter ios

我有一个日期字符串,例如:

2012-04-09T23:57:44.070Z
Run Code Online (Sandbox Code Playgroud)

我的日期格式是:

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

但它回来了.我的日期格式有什么问题?谢谢

Dav*_*ong 5

你不需要如此积极地逃避-:.此外,你的秒字符是错误的.你应该使用:

NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[f setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];

NSLog(@"%@", [f dateFromString:@"2012-04-09T23:57:44.070Z"]);
Run Code Online (Sandbox Code Playgroud)

这个日志:

2012-04-09 23:57:44 +0000
Run Code Online (Sandbox Code Playgroud)

如果您没有在日期格式化程序上设置时区,那么它将假设您指的是设备现在处于的任何时区,而不是 GMT时区(这Z意味着什么).