ran*_*dom 29 formatting iso objective-c nsdate nsdateformatter
我有来自服务器的时间戳,如下所示:
2013-04-18T08:49:58.157+0000
Run Code Online (Sandbox Code Playgroud)
我试过去掉冒号,我已经尝试了所有这些:
将ISO 8601时间戳转换为NSDate:如何处理UTC时间偏移?
为什么NSDateFormatter无法解析ISO 8601格式的日期
这是我在的地方:
+ (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];
}
Run Code Online (Sandbox Code Playgroud)
我最大的问题之一是,我上面的日期格式是否真的是ISO 8601?我从人们看到的所有例子都有不同的格式.有些人...157-0000,有些人最后没有任何东西.
rma*_*ddy 62
这对我有用:
NSString *dateString = @"2013-04-18T08:49:58.157+0000";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
// Always use this locale when parsing fixed format date strings
NSLocale *posix = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:posix];
NSDate *date = [formatter dateFromString:dateString];
NSLog(@"date = %@", date);
Run Code Online (Sandbox Code Playgroud)
小智 16
Apple有新的API! NSISO8601DateFormatter
NSString *dateSTR = @"2005-06-27T21:00:00Z";
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
NSDate *date = [formatter dateFromString:dateSTR];
NSLog(@"%@", date);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13713 次 |
| 最近记录: |