iOS NSDateformatter问题 - 无论输入字符串如何,dateFromString返回相同(不正确)的时间

时间:2013-08-26 08:05:53

标签: ios nsdate nsdateformatter

不确定我在这里缺少什么。以下代码返回有效的NSDate但时间不正确。

事实上,dateString返回的时间始终不正确并不重要,所以我认为这不是时区问题,而是格式化问题。

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];

[inputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss+HH:mm"];
[inputFormatter setTimeZone:[NSTimeZone defaultTimeZone]];

NSString *dateString = @"2013-07-26T19:45:00+01:00";

NSDate *theDate = [inputFormatter dateFromString:dateString];

// returns an NSDate of 2013-07-26 01:00 BST or 2013-07-26 00:00 in NSLog

有人发现我哪里错了?谢谢,M。

1 个答案:

答案 0 :(得分:1)

你的日期格式中存在一个小错误,你没有处理日期偏移(时区)。 NSDateFormatter不会选择最新的发现时间作为时间而不是时区。

在您的代码yyyy-MM-dd'T'HH:mm:ss+HH:mm中,您要解析时间两次,您应该使用yyyy-MM-dd'T'HH:mm:ssZZZZZZZZ指定时区。 请注意,此代码仅适用于iOS6及更高版本,如果您需要支持iOS 5,则应从时区中删除: