我有一个具有这种格式日期的 plist:
Mar 11, 2013 10:16:31 AM
在我的控制台中显示为
2013-03-11 16:16:31 +0000
而 web 服务正在返回控制台中的内容,如下所示:
2013-03-01T18:21:45.231Z
如何将我的 plist 日期修复为与 Web 服务相同的格式?
关于您的三种日期格式:
第一个只是当您NSDate
在 Xcode 中查看 plist 时的日期格式,这是当前语言环境中人类可读的日期(但如果您在文本编辑器中查看 plist,您会看到它实际上是用@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"
格式编写的)。
第二个是description
方法 a的默认格式NSDate
(例如你NSLog
a NSDate
)。
请参阅 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);
如果您想将日期作为 RFC 3339/ISO 8601 格式的字符串存储在 plist 中(或者,如果您需要将 a 转换NSDate
为字符串以传输到您的 Web 服务),您可以使用它。如上所述,默认的 plist 格式不会为NSDate
对象保留几分之一秒,因此如果这很关键,将日期存储为上述代码生成的字符串可能会很有用。
此日期格式化程序可用于将日期转换为字符串(使用stringFromDate
),以及将正确格式化的字符串转换为NSDate
对象(使用dateFromString
)。