如何该字符串转换:NSString到NSDate转换。问题 “2011-08-24T14:06:10Z”
2011-08-24T14:06:10Z
到的NSDate使用NSDateFormatter。我不知道要设置哪种格式。这个'T'和'Z'意味着什么?
如何该字符串转换:NSString到NSDate转换。问题 “2011-08-24T14:06:10Z”
2011-08-24T14:06:10Z
到的NSDate使用NSDateFormatter。我不知道要设置哪种格式。这个'T'和'Z'意味着什么?
这是一个RFC3339日期格式。
可以使用解析它:
NSDateFormatter* rfc3339DateFormatter = [[NSDateFormatter alloc] init];
[rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
NSDate* date = [rfc3339DateFormatter dateFromString:yourString];
[aDateFormatter release];
更多信息,请访问该Apple Formatting Dates Documentation ,你也可以找到RFC3339日期格式(关于T和Z)in this section of the RFC3339 standard
之间的分隔符,实际上格式是:@“yyyy-MM-dd'T'HH:mm:ss'Z'” 。感谢您的帮助 –
这是不正确的。你必须不引用'Z'或者你应该指定格式化程序的'timeZone'为GMT/UTC。 – Rob
的更多信息解析RFC 3339/ISO 8601日期的方法如下:
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZZZZZ";
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
或者,在macOS 10.12和iOS 10中:
NSISO8601DateFormatter *formatter = [[NSISO8601DateFormatter alloc] init];
然后:
NSDate* date = [formatter dateFromString:dateString];
笔记,所述ZZZZZ
告诉格式化器使用存在的串转换字符串NSDate
对象时(其中GMT + 0被表示为Z
)中的时区。同样,通过设置dateFormat
和timeZone
,此格式化程序还可用于将NSDate
对象转换回像2011-08-24T14:06:10Z
这样的字符串,进行必要的时区转换。底线,这个格式化程序适用于两个方向。
locale
属性的使用也是最佳实践,因为它确保日期将被正确解释,而不管设备的特定日历(即特别是如果它不是公历)。见Technical Q&A 1480。
它是UTC,z代表祖鲁语 –
我相信'T'只是日期和时间 –