結果はまだ前日です。NSTimeZoneが適切に設定されており、私の国(イタリア、ローマ)に適しているため、理由を自問しています。 これが私のコードのスタブです、何かアイデアはありますか?
NSString *dateString = @"03/07/2008";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setFormatterBehavior:[NSDateFormatter defaultFormatterBehavior]];
[formatter setDateFormat:@"dd/MM/yyyy"];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
NSDate *dateFromString = [formatter dateFromString:dateString];
[formatter release];
dateFromStringの結果はこれです 2008-07-02 22:00:00 +0000.
私は他の解決策を探しましたが、一般的な答えはタイムゾーンを正しく設定することでした。私の場合は正しく設定されていますが、問題はまだ残っています。
回答:
回答№1は6デフォルトでは NSDate
説明にUTC日付を返します +0000
。 UTCより数時間進んでいるため、前日の22:00:00になります。私は-5で、UTCの結果は 2008-07-03 04:00:00 +0000 (DST)。日付は正しいです。UTCで表示されているだけです。どこかで正しく表示しようとしている場合は、日付フォーマッターを使用して文字列を再度取得してください。
...
NSDate *dateFromString = [formatter dateFromString:dateString];
NSString *stringFromDate = [formatter stringFromDate:dateFromString];
[formatter release];
NSLog(@"%@ : %@", dateFromString, stringFromDate);
2008-07-03 04:00:00 +0000:2008年3月7日