我想通过NSDateFormatter将UTC时间更改为本地时间。
但它没有达到预期效果。
-(NSDateFormatter *)df
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
dateFormatter.timeZone = [NSTimeZone defaultTimeZone];
return dateFormatter;
}
...
NSDate *now = [NSDate date];
NSString *dateStr = [[self df] stringFromDate:now];
// dateStr is correct.
//dateStr is 2013-12-26 20:32:26 +0900
NSLog(@"dateStr is %@",dateStr);
NSDate *date = [[self df] dateFromString:dateStr];
// date is wrong.
//date is 2013-12-26 11:32:26 +0000
NSLog(@"date is %@",date);
为什么date不等于dateStr。
我想要日期返回2013-12-26 10:32:26 +0900
你知道吗?提前谢谢。答案 0 :(得分:3)
您获得的NSDate *date
是正确的 - 2013-12-26 11:32:26 +0000
是2013-12-26 20:32:26 +0900
的UTC代表。 NSDate
个对象不嵌入时区 - 它们代表一个抽象的时间点,而不是任何特定时区的时间点。
NSLog
始终以UTC格式记录时间,因为它调用description
的{{1}}方法。
答案 1 :(得分:0)
您需要更改最终日期的时区以获得所需的结果。