我有这个字符串日期:
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。
最佳答案
我认为您的代码没有错。使用此代码:-
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
但是 NSDATE
的 NSLog
根据此 NSDate Format outputting wrong date 输出不正确所以你的代码是正确的。
The NSDate doesn't know anything about formatting (just date information), and the NSDateFormatter doesnt really know anything about dates, just how to format them. So you have to use methods like -stringFromDate: for know that is current or not to actually format the date for pretty human-readable display.
NSLog(@" date is %@",[dateFormat stringFromDate:date]);
关于ios - 将字符串日期转换为 NSDate 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23193230/