【问题标题】:How to parse an ISO8601 date [duplicate]如何解析 ISO8601 日期 [重复]
【发布时间】:2012-01-30 09:23:55
【问题描述】:

我得到了关于这种格式的日期字符串:

2011-12-29T09:09:06-0500

如何将其转换为日期对象?

【问题讨论】:

标签: iphone objective-c ios date iso8601


【解决方案1】:

试试这个解决方案

NSString *dateString = @"2011-12-29T09:09:06-0500";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];

NSDate *dateFromString = [dateFormatter dateFromString:dateString];    
[dateFormatter release];
NSLog(@" dateFromString %@",dateFromString);

【讨论】:

  • 这是在 Zulu 上捡起 TZ 还是将其击倒,还是...? (我没有使用任何 iX。)
  • 这在许多 ISO8601 日期字符串上失败,例如“2013-11-27T11:28:10.201-08:00”。 en.wikipedia.org/wiki/ISO_8601还有更全面的吗?
  • swift 版本:` let date = "2008-12-29T00:27:42-0800" let formatter = NSDateFormatter() formatter.setLocalizedDateFormatFromTemplate("yyyy-MM-dd'T'HH:mm :ssZZZ") let final = formatter.dateFromString(date) `
【解决方案2】:
NSString *date = [[NSDate date] description];

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];

NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:<NSString containing date>];

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 2013-03-28
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多