这些date是什么types的?

我有一个这种格式dateplist:

Mar 11, 2013 10:16:31 AM 

这显示在我的控制台中

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

而webservice正在返回一些在控制台中的内容:

 2013-03-01T18:21:45.231Z 

如何将我的plistdate修改为与Web服务相同的格式?

关于你的三种date格式:

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

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

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

请参阅Apple的技术问答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); 

如果要将date作为string以RFC 3339 / ISO 8601格式存储在plist中(或者,如果需要将NSDate转换为string以传输到Web服务),则可以使用此方法。 如上所述,默认的plist格式不会保留NSDate对象的小数部分,所以如果这很关键,那么按照上面的代码生成的string存储date可能是有用的。

这个date格式化器可以用来将date转换为string(使用stringFromDate ),以及正确地将string格式化为NSDate对象(使用dateFromString )。