【发布时间】:2013-07-07 16:29:49
【问题描述】:
我有一个来自服务器的时间戳,如下所示:
2013-04-18T08:49:58.157+0000
我已经尝试删除冒号,我已经尝试了所有这些:
Converting an ISO 8601 timestamp into an NSDate: How does one deal with the UTC time offset?
Why NSDateFormatter can not parse date from ISO 8601 format
这是我现在的位置:
+ (NSDate *)dateUsingStringFromAPI:(NSString *)dateString {
NSDateFormatter *dateFormatter;
dateFormatter = [[NSDateFormatter alloc] init];
//@"yyyy-MM-dd'T'HH:mm:ss'Z'" - doesn't work
//@"yyyy-MM-dd'T'HH:mm:ssZZZ" - doesn't work
//@"yyyy-MM-dd'T'HH:mm:sss" - doesn't work
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
// NSDateFormatter does not like ISO 8601 so strip the milliseconds and timezone
dateString = [dateString substringWithRange:NSMakeRange(0, [dateString length]-5)];
return [dateFormatter dateFromString:dateString];
}
我最大的问题之一是,我上面的日期格式真的是 ISO 8601 吗?我从人们那里看到的所有示例,每个示例的格式都略有不同。有些人有...157-0000,有些人最后什么都没有。
【问题讨论】:
-
你需要
yyyy-MM-dd'T'HH:mm:ss.sssZ。 -
没有骰子,我什至尝试删除该行以删除最后 5 个字符。
-
抱歉,我打错了 - 应该是
yyyy-MM-dd'T'HH:mm:ss.SSSZ。不要修剪字符串,不要设置时区。
标签: objective-c formatting nsdate nsdateformatter iso