这些日期是什么类型的?

时间:2013-04-16 20:34:05

标签: ios date format

我有一个有这种格式日期的plist:

Mar 11, 2013 10:16:31 AM

在我的控制台中显示为

2013-03-11 16:16:31 +0000

而web服务正在返回控制台中的内容:

2013-03-01T18:21:45.231Z

如何将plist日期修改为与Web服务相同的格式?

1 个答案:

答案 0 :(得分:3)

关于您的三种日期格式:

  1. 当您在Xcode中查看plist中的NSDate时,第一个只是日期格式,Xcode是当前语言环境中的人类可读日期(但如果您在文本编辑器中查看plist,你会发现它实际上是以@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"格式编写的。

  2. 第二种是description方法NSDate的默认格式(例如NSLog a NSDate)。

  3. 第三种是RFC 3339 / ISO 8601格式(只有几分之一秒),通常用于Web服务。

  4. 请参阅Apple的Technical Q&A QA1480

    另外,该技术说明不包括毫秒,因此您可能希望使用@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'"之类的内容,例如:

    NSDate *date = [NSDate date];
    NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.locale = enUSPOSIXLocale;
    formatter.dateFormat = @"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'";
    formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
    NSString *dateString = [formatter stringFromDate:date];
    NSLog(@"%@", dateString);
    

    如果要将日期作为RFC 3339 / ISO 8601格式的字符串存储在plist中(或者,如果需要将NSDate转换为字符串以便传输到Web),则可以使用此方法服务)。如上所述,默认plist格式不会为NSDate对象保留一秒的分数,因此如果这很重要,则将日期存储为上述代码生成的字符串可能很有用。

    此日期格式化程序可用于将日期转换为字符串(使用stringFromDate),以及将格式正确的字符串转换为NSDate个对象(使用dateFromString)。