为什么字符串中的NSDate少了一天?

时间:2012-04-23 10:37:28

标签: objective-c ios nsdate nsdateformatter

如果我尝试:

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyyMMdd"];

[formatter dateFromString:@"20120423"];

我的新NSDate对象将是:2012 04 22 。为什么减少一天?

感谢

3 个答案:

答案 0 :(得分:22)

您遇到时区问题,可以通过添加以下代码来解决:

formatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];

答案 1 :(得分:3)

对于那些寻找 swift 3 版本

的人
let formatter        = DateFormatter()
formatter.timezone   = TimeZone(abbreviation: "GMT")
formatter.dateFormat = "yyyyMMdd"
formatter.date(from: "20120423")

答案 2 :(得分:0)

对于使用 Swift 3

的一个衬垫
Date.init(dateString: "2014-07-31", format: "yyyy-MM-dd", timeZone: TimeZone.init(abbreviation: "GMT")!)