0

不知道我在这里缺少什么。以下代码返回一个有效的 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。

4

1 回答 1

1

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

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

于 2013-08-26T08:16:22.123 回答