NSDateFormatter dateFromString 结果错误?

NSDateFormatter dateFromString wrong result?

我正在尝试从 NSString 中获取 NSDate 对象。问题是,我在这个过程中 losing 1 天。

这是 NSString2015-08-01,这里是代码:

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"yyyy-MM-dd"];
    NSDate *result = [df dateFromString:dateString];

result原来是2015-07-31 21:00:00 +0000

怎么会这样?我不明白。另外,21:00:00 是从哪里来的?无论 运行 真实设备或模拟器上的代码如何,我都会得到相同的结果。

知道为什么吗?我怀疑 timezone 有问题。但是,我得到 UTC 格式的 dateString,并且我没有改变它。想法?

设置时区就可以了

NSString *dateString = @"2015-08-01";
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    [df setDateFormat:@"yyyy-MM-dd"];
    NSDate *result = [df dateFromString:dateString];

检查时区。

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];