NSString 到 NSDate 给出前一天的日期
NSString to NSDate gives date with a previous day
我正在尝试将 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)。
谁能给我解释一下这是怎么回事?
不,一小时前。原因是时区:
Unexpected value from NSDate
输出的时区为“+0000”:您的计算机可能设置为时区“+0100”。
你的错误是没有理解 NSDate 的含义。 NSDate 包含没有时区的时间点。 NSDate 使用 UTC 显示,即它显示伦敦没有夏令时的时间。如果您在纽约,那么在纽约的今天(午夜)开始时,伦敦的时间将是早上 6 点,这就是 NSDate 显示的内容。如果你在莫斯科,那么在莫斯科的今天(午夜)开始时,伦敦的时间将是前一天的晚上 10 点,这就是 NSDate 显示的内容。
你不能也不应该做任何事情,这是完全正确的。
我正在尝试将 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)。
谁能给我解释一下这是怎么回事?
不,一小时前。原因是时区:
Unexpected value from NSDate
输出的时区为“+0000”:您的计算机可能设置为时区“+0100”。
你的错误是没有理解 NSDate 的含义。 NSDate 包含没有时区的时间点。 NSDate 使用 UTC 显示,即它显示伦敦没有夏令时的时间。如果您在纽约,那么在纽约的今天(午夜)开始时,伦敦的时间将是早上 6 点,这就是 NSDate 显示的内容。如果你在莫斯科,那么在莫斯科的今天(午夜)开始时,伦敦的时间将是前一天的晚上 10 点,这就是 NSDate 显示的内容。
你不能也不应该做任何事情,这是完全正确的。