【问题标题】:How do I parse an ISO 8601/RFC 3339 timezone with NSDateFormatter?如何使用 NSDateFormatter 解析 ISO 8601/RFC 3339 时区?
【发布时间】:2010-09-04 16:43:44
【问题描述】:

我有一个这样的日期字符串(ISO 8601 combined date and time representation 或 RFC 3339):

2010-09-04T19:13:00Z

但是如何配置 NSDateFormatter 以接受这种时区格式?

【问题讨论】:

    标签: ios objective-c nsdateformatter rfc3339


    【解决方案1】:

    看看here Apple 的推荐:

    // Convert the RFC 3339 date time string to an NSDate.
    
    NSDateFormatter *rfc3339DateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    
    NSLocale *enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
    
    [rfc3339DateFormatter setLocale:enUSPOSIXLocale];
    [rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
    [rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    
    NSDate *date = [rfc3339DateFormatter dateFromString:rfc3339DateTimeString];
    

    【讨论】:

      【解决方案2】:
      [NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
      NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
      [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
      NSDate *date = [formatter dateFromString:'2010-09-04T19:13:00Z'];
      

      【讨论】:

        猜你喜欢
        • 2012-04-20
        • 2010-10-06
        • 2022-01-19
        • 2011-08-27
        相关资源
        最近更新 更多