这些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格式:
-
第一种是当你查看Xcode中plist中的
NSDate
时的date格式,这是当前语言环境中人类可读的date(但是如果你在文本编辑器中查看plist,你会发现它实际上写在@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"
格式)。 -
第二个是从
description
方法NSDate
的默认格式(例如NSLog
NSDate
)。 -
第三个是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
)。