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其他提及?
謝謝!這不應該是必要的,但工作得很好。 – Enigma 2013-03-06 08:39:42