NSString到NSDate给出前一天的日期

时间:2015-03-03 09:04:45

标签: ios objective-c core-data

我正在尝试将NSString转换为NSDate。我的传入字符串是02/03/2015我的转换是这样完成的:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
dateFormat.locale = [NSLocale currentLocale];
dateFormat.timeZone = [NSTimeZone localTimeZone];
dateFormat.timeStyle = NSDateFormatterShortStyle;
dateFormat.dateStyle = NSDateFormatterShortStyle;
dateFormat.locale = [NSLocale currentLocale];
[dateFormat setDateFormat:@"dd/MM/yyyy"];
NSDate *date = [dateFormat dateFromString:jsonObject[@"chartDate"]];

我的输出是:“2015-03-01 23:00:00 +0000”所以突然之间的日期是一天(这是从Coredata中检索到的,它是NSDate)。

有人可以解释我的错吗?

2 个答案:

答案 0 :(得分:4)

不,这是一个小时后。原因是时区:

Unexpected value from NSDate

输出的时区为“+0000”:可能您的计算机设置为时区“+0100”。

答案 1 :(得分:2)

你错了的是不了解NSDate的含义。 NSDate包含没有时区的时间点。 NSDate使用UTC显示,即显示伦敦没有夏令时的时间。如果你在纽约,那么在纽约的今天(午夜)开始,伦敦的时间是早上6点,这就是NSDate所展示的。如果你在莫斯科,那么在莫斯科的今天(午夜)开始,伦敦的时间将是前一天晚上10点,这就是NSDate所展示的。