ISO 8601日期的正确dateFormat

时间:2018-07-29 20:55:44

标签: ios nsdateformatter iso8601

我堆积了2017-12-13T10:30:00.000-06:00的{​​{1}}的dateFormat。我尝试了不同的格式,但仍然从NSDateFormatter获得nil。我在nsdateformatter上获得的最可能的格式是[formatter dateFromString:exampleDate],但是TimeZone无法正确应用,我从@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"得到了nil

我也尝试使用:

NSDateFormatter

,也得到了NSISO8601DateFormatter *dateFormatter = [[NSISO8601DateFormatter alloc] init]; [dateFormatter dateFromString:@"2017-12-13T10:30:00.000-06:00"];

1 个答案:

答案 0 :(得分:1)

您可以将NSISO8601DateFormatter与选项.withFractionalSeconds(iOS 11.0+)和.withInternetDateTime一起使用

NSISO8601DateFormatter *dateFormatter = [[NSISO8601DateFormatter alloc] init];
dateFormatter.formatOptions = NSISO8601DateFormatWithFractionalSeconds | NSISO8601DateFormatWithInternetDateTime;
NSDate *date = [dateFormatter dateFromString:@"2017-12-13T10:30:00.000-06:00"];
NSLog(@"%@", date);

对于标准NSDateFormatter,日期格式正确

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ";
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
NSDate *date = [dateFormatter dateFromString:@"2017-12-13T10:30:00.000-06:00"];
NSLog(@"%@", date);