NSDateFormatter ISO8601 NSString 做NSdate转换

NSDateFormatter ISO8601 NSString do NSdate conversion

我在将字符串日期(可能是 ISO 8601)转换为 NSDate 时遇到问题..

NSString *testDate = @"2016-01-27T18:28:53.344+01:00";

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.sssZZZZZ"];

NSLog(@"_date_: %@",[formatter dateFromString:testDate]);
NSLog(@"_now_date: %@",[formatter stringFromDate:[NSDate date]]);

NSLog return: _date_:(null) _now_date: 2016-02-03T22:36:46.046+01:00

什么是正确的时间格式?如果记录当前日期,格式可能看起来是正确的,但我无法从字符串

中获取 NSDate

您的日期字符串中有小数秒。小数秒被指定为大写 S。试试这个:

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"]

请注意,您返回的 NSDate2016-01-27 17:28:53.344 +0000。这是因为 NSDate 始终以 UTC 表示时间。 17:38 UTC18:38 +01:00 的时间相同。