2011-02-06 45 views
1

以下代码适用于iOS 4.2以前的应用程序。iOS 4.2 DateFormatter

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的变化,我错过了。我想这是一些小事在这一点上,因为我已经在这盯着...

回答

0

尝试引用您的破折号,如:

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

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

+0

没有工作。从其他文章看来,这似乎是一个iOS> 4的问题。 – 2011-02-06 15:59:06

2

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

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

+0

NSDateFormatter先前了解它,iOS <4。我修改了我的API以返回时间戳。所以看起来没有真正的答案。我解决了这是一个iOS 4的错误。 – 2011-02-15 18:20:42