不确定我在这里缺少什么。以下代码返回有效的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。
答案 0 :(得分:1)
你的日期格式中存在一个小错误,你没有处理日期偏移(时区)。 NSDateFormatter
不会选择最新的发现时间作为时间而不是时区。
在您的代码yyyy-MM-dd'T'HH:mm:ss+HH:mm
中,您要解析时间两次,您应该使用yyyy-MM-dd'T'HH:mm:ssZZZZ
。 ZZZZ
指定时区。
请注意,此代码仅适用于iOS6及更高版本,如果您需要支持iOS 5,则应从时区中删除:
。