2013-03-05 27 views
1

我與日曆工作的一天,發現NSDateFormatter一個問題,即表現在iOS 5.0和iOS 6.0的不同。 我嘗試創建一年中某些日期的日期。 因此,例如,我想知道這是一年中的一天59'th。NSDateFormatter不同的基準年的iOS 5和iOS 6解析今年

要做到這一點我使用NSDateFormatter,並將其設置的日期格式爲「DDD」(當年的三位天),只是試圖解析包含當天的字符串。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
// just gettting rid of the timezone 
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
[formatter setDateFormat:@"DDD"]; 

NSMutableString *outPutString = [NSMutableString stringWithString:@"\n"]; 
for (int i = 1; i <= 366; i++) 
{ 
    NSString *dayOfTheYearString = [NSString stringWithFormat:@"%i", i]; 
    [outPutString appendFormat:@"%3i: %@ string:(%@)\n", i, [formatter dateFromString:dayOfTheYearString], dayOfTheYearString]; 
} 

NSLog(@"%@", outPutString); 
[formatter release]; 

在iOS 5.0上運行此模擬器工作正常。控制檯打印:

001: 1970-01-01 00:00:00 +0000 string:(1) 
002: 1970-01-02 00:00:00 +0000 string:(2) 
003: 1970-01-03 00:00:00 +0000 string:(3) 
004: 1970-01-04 00:00:00 +0000 string:(4) 
005: 1970-01-05 00:00:00 +0000 string:(5) 
[...] 
058: 1970-02-27 00:00:00 +0000 string:(58) 
059: 1970-02-28 00:00:00 +0000 string:(59) 
060: 1970-03-01 00:00:00 +0000 string:(60) 
061: 1970-03-02 00:00:00 +0000 string:(61) 
[...] 

但在iOS 6.0控制檯打印:

001: 2000-01-01 00:00:00 +0000 string:(1) 
002: 2000-01-02 00:00:00 +0000 string:(2) 
003: 2000-01-03 00:00:00 +0000 string:(3) 
004: 2000-01-04 00:00:00 +0000 string:(4) 
005: 2000-01-05 00:00:00 +0000 string:(5) 
[...] 
058: 2000-02-27 00:00:00 +0000 string:(58) 
059: 2000-02-28 00:00:00 +0000 string:(59) 
060: 2000-02-29 00:00:00 +0000 string:(60) 
061: 2000-03-01 00:00:00 +0000 string:(61) 
[...] 

這是我的主要問題。由於2000年是閏年,我以下的計算結果在iOS 5.0和iOS 6.0之間有所不同。

我知道這是要注意的是一年一個閏年或不要求第X天的時候。但是如果我沒有提供有關年份的任何信息,我預計結果日期是在1970年!

那麼如何強制NSDateFormatter創建(使用全球標準)日期在1970年的時候沒有的iOS 6.0其他提及?

回答

0

當你在約會過,可以指定基年。除了使用

[formatter setDateFormat:@"DDD"]; 

使用

[formatter setDateFormat:@"yyyy-DDD"]; 

然後,你的一年的字符串天天變化

NSString *dayOfTheYearString = [NSString stringWithFormat:@"1970-%i", i]; 
+0

謝謝!這不應該是必要的,但工作得很好。 – Enigma 2013-03-06 08:39:42