【问题标题】:NSDateFormatter ISO8601 NSString do NSdate conversionNSDateFormatter ISO8601 NSString 做 NSdate 转换
【发布时间】:2016-02-03 18:34:13
【问题描述】:

我在将字符串日期(可能是 ISO 8601)转换为 NSDate 时遇到问题..

NSString *testDate = @"2016-01-27T18:28:53.344+01:00";

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.sssZZZZZ"];

NSLog(@"_date_: %@",[formatter dateFromString:testDate]);
NSLog(@"_now_date: %@",[formatter stringFromDate:[NSDate date]]);

NSLog 返回: _date_:(null) _now_date: 2016-02-03T22:36:46.046+01:00

什么是正确的时间格式?如果记录当前日期,格式可能看起来正确,但我无法从字符串中获取 NSDate

【问题讨论】:

    标签: nsdate nsdateformatter iso8601


    【解决方案1】:

    您的日期字符串中有小数秒。小数秒被指定为大写 S。试试这个:

    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"]
    

    请注意,您返回的NSDate 是2016-01-27 17:28:53.344 +0000。这是因为 NSDate 始终以 UTC 表示时间。 17:38 UTC 与 18:38 +01:00 是同一时刻。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多