相关疑难解决方法(0)

将ISO 8601时间戳转换为NSDate:如何处理UTC时间偏移?

我无法将ISO 8601时间戳转换为NSDate.我尝试使用NSDateFormatter,但我无法使用时间戳结束时出现的UTC时间偏移.为了解释,我想将以下时间戳转换为NSDate:2011-03-03T06:00:00-06:00.我的问题是:我如何处理"-06:00"部分?我尝试使用yyyy-MM-dd'T'HH:mm:ssZ我的日期格式字符串,但它不起作用.有什么建议?

iso utc nsdate

37
推荐指数
3
解决办法
2万
查看次数

将ISO 8601转换为NSDate

我有来自服务器的时间戳,如下所示:

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,有些人最后没有任何东西.

formatting iso objective-c nsdate nsdateformatter

29
推荐指数
2
解决办法
1万
查看次数

标签 统计

iso ×2

nsdate ×2

formatting ×1

nsdateformatter ×1

objective-c ×1

utc ×1