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"]
请注意,您返回的 NSDate
是 2016-01-27 17:28:53.344 +0000
。这是因为 NSDate
始终以 UTC 表示时间。 17:38 UTC
与 18:38 +01:00
的时间相同。
我在将字符串日期(可能是 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"]
请注意,您返回的 NSDate
是 2016-01-27 17:28:53.344 +0000
。这是因为 NSDate
始终以 UTC 表示时间。 17:38 UTC
与 18:38 +01:00
的时间相同。