NSDateFormatter返回nil

时间:2014-03-26 15:33:53

标签: objective-c nsdateformatter

我正在尝试解析以格式传递的日期:

"2014-03-26T05:07:42.14286Z"

我的NSDateFormatter代码如下所示

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'SS'Z'"];
self.createdAt = [dateFormatter dateFromString:@""2014-03-26T05:07:42.14286Z""];

但它只返回nil。我尝试过多种变化,有或没有刻度,但我似乎缺少一些东西。我是否错误地使用NSDateFormatter,完全误解了滴答声的用法?

2 个答案:

答案 0 :(得分:6)

如果给定的字符串与预期的格式不对应,则格式化程序返回nil。您的格式字符串几乎是正确的,您只需要:

  • 撇号只能用于文字
  • 毫秒应指定为' SSS'并匹配分离(使用ss.SSS)

正确的格式字符串是:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
NSDate *d = [df dateFromString:@"2014-03-26T05:07:42.14286Z"];

答案 1 :(得分:0)

只需将以下行替换为修改后的行

即可
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'SS'Z'"];

修改后的行: -

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];