NSDateFormatter,NSDate,UTC和奇怪的日期格式

时间:2010-07-20 03:00:10

标签: iphone cocoa cocoa-touch

我有一个非常奇怪的日期格式通过JSON来找我。例如 - “2010年7月18日02:22:09”

这些日期始终为UTC。我正在使用NSDateFormatter解析日期,并将timeZone设置为UTC ...

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[inputFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
[inputFormatter setDateFormat:@"MMMM, dd yyyy HH:mm:ss"];
NSDate *formatterDate = [inputFormatter dateFromString:dtStr];

但是,记录的日期与我的设备的偏移量一起出现......

“2010-07-18 02:22:09 -0600”

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

我认为这是因为你的NSDate没有使用UTC时区。文档说明了NSDate的描述方法:

  

接收器的字符串表示形式,国际格式为YYYY-MM-DD HH:MM:SS±HHMM,其中±HHMM表示GMT小时和分钟的时区偏移(例如,“2001-03-24” 10:45:32 +0600“)。

所以,你真的没有做错任何事。 NSDate的行为符合预期。你想达到什么目的?你需要字符串中的日期吗?你在做日期比较吗?