2011-02-06 38 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