NSDateFormatter的区别

这两种date格式有什么区别。 第一个给实际时间,但第二个给予时间购买增加时区偏移值。

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; NSDate *dateConverted = [dateFormatter dateFromString:@"2013-12-02T12:15:43.182Z"]; NSLog(@"Date: %@",dateConverted); // 

date: 2013-12-02 12:15:43 +0000

 NSDateFormatter * dateFormatter1 = [[NSDateFormatter alloc] init]; [dateFormatter1 setTimeZone:[NSTimeZone systemTimeZone]]; [dateFormatter1 setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'"]; NSDate *dateConverted1 = [dateFormatter1 dateFromString:@"2013-12-02T12:15:43.182Z"]; NSLog(@"%@",dateConverted1); 

date: 2013-12-02 06:45:43 +0000

第二种格式的问题是所有不必要的引号,特别是在Z周围。 通过引用Z这意味着Z被视为文字字符而不是时区格式说明符。

摆脱Z周围的报价,都会给出相同的结果。

第二个date格式化程序是不正确的,'Z'不应该单引号,这使它不被视为格式字符。

此外,唯一需要的单引号是'T',因此不被视为格式字符而是文字。

请参阅ICU用户指南: 格式化date和时间