日付フォーマッタに関連する問題があります。日付「2012-10-21」に対してnullが返されます。
他のものが結果に干渉しないことを確認するために、テストしたいコードのみを使用してサンプルプロジェクトを作成しました。
iOS 5では期待どおりに実行されていますが、iOS6では日付フォーマッターがnullを返しています。
これは私のコードです:
NSString *myStringDate = @"2012-10-21";
//------------------------//
NSLog(@"Test 1");
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *myDate = [formatter dateFromString:myStringDate];
NSLog(@"Date: %@", myDate);
//------------------------//
NSLog(@"Test 2");
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
[formatter2 setDateFormat:@"yyyy-MM-dd"];
[formatter2 setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *myDate2 = [formatter2 dateFromString:myStringDate];
NSLog(@"TimeZone: %@", [NSTimeZone systemTimeZone]);
NSLog(@"Date: %@", myDate2);
//------------------------//
NSLog(@"Test 3");
NSDateFormatter *formatter3 = [[NSDateFormatter alloc] init];
[formatter3 setDateFormat:@"yyyy-MM-dd"];
[formatter3 setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:-7200]];
NSDate *myDate3 = [formatter3 dateFromString:myStringDate];
NSLog(@"TimeZone: %@", [NSTimeZone timeZoneForSecondsFromGMT:-7200]);
NSLog(@"Date: %@", myDate3);
//------------------------//
iOS 5.1シミュレーターの結果:
Test 1
Date: 2012-10-21 03:00:00 +0000
Test 2
TimeZone: America/Sao_Paulo (BRST) offset -7200 (Daylight)
Date: 2012-10-21 03:00:00 +0000
Test 3
TimeZone: GMT-0200 (GMT-02:00) offset -7200
Date: 2012-10-21 02:00:00 +0000
iOS 6.0シミュレーターの結果:
Test 1
Date: (null)
Test 2
TimeZone: America/Sao_Paulo (GMT-03:00) offset -7200 (Daylight)
Date: (null)
Test 3
TimeZone: GMT-0200 (GMT-02:00) offset -7200
Date: 2012-10-21 02:00:00 +0000
NSDateFormatterは、日付が。の場合にのみiOS6でnullを返します"2012-10-21"
。2012年の他のすべての日付については、両方のiOSバージョンで正しい結果が得られます。
誰でも理由を説明できますか?そのバグ?私のコードは間違っていますか?