iOS 4.2 DateFormatter

时间:2011-02-06 14:56:07

标签: iphone ios-4.2

以下代码在iOS 4.2之前的应用程序中有效。

NSString *sunday = @"2011-03-13 20:15 -04:00";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm Z"];
NSDate *myDate = [dateFormatter dateFromString:sunday];

NSLog(@"sunday: %@ myDate: %@ fromNow: %d", sunday, myDate, [myDate timeIntervalSinceNow]);

输出:

sunday: 2011-03-13 20:15 -04:00 myDate: (null) fromNow: 0

我在这里做错了什么? myDatenull。是否有关于dateFormmater的内容发生了变化而我却失踪了。我想在这一点上这是微不足道的,因为我一直在盯着这个......

2 个答案:

答案 0 :(得分:2)

如果我正确理解了问题,Z说明符解析“-0400”和“GMT-04:00”,而不是“-04:00”。 UTS #35似乎证实了这一点。不过,在我的测试中,它甚至解析了“GMT-0400”。所以“-04:00”确实看起来像NSDateFormatter拒绝理解的唯一时区格式。

我可以玩世不恭地建议Apple's bug reporter作为答案吗?

答案 1 :(得分:0)

尝试引用破折号,例如:

  @"yyyy'-'MM'-'dd HH':'mm Z"

我在这里最好的阅读:http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns似乎表明这实际上是必需的,尽管我似乎记得过去在iOS w / o问题上使用了相同的日期格式化模式。