我有这个字符串日期:
2014-04-21T07:55:13Z
当我将其转换为NSDate时,我的时间就像6:55 ......少了1个小时。为什么?
这是我用来转换的代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *newDate = [dateFormatter dateFromString:dateStr];
newDate
现在是2014-04-21 06:55:13 +0000
!!! ???
出了什么问题?
注意:如果日期是我的当地时间(GMT + 1)转换为GMT,则减少一小时是有意义的。但如果Z为零偏移(= GMT),则日期已经是GMT。
答案 0 :(得分:1)
我认为你的代码不对。使用此代码: -
NSString *dateStr = @"2014-04-21T07:55:13Z";
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate *date = [dateFormat dateFromString:dateStr];
NSLog(@" date log %@",date); //2014-04-21 02:25:13 +0000 output
// Convert date object to desired output format
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
dateStr = [dateFormat stringFromDate:date];
NSLog(@"string %@",dateStr); //2014-04-21T07:55:13Z output
但NSLog
的{{1}}根据此NSDate Format outputting wrong date输出无效,因此您的代码是正确的。
NSDate对格式化(只是日期信息)一无所知,NSDateFormatter对日期一无所知,只知道如何格式化日期。所以你必须使用像-stringFromDate这样的方法:知道当前或不是实际格式化日期以供人类可读的显示。
NSDATE