2012-10-01 5 views
6

NSDateFormatterに問題があります。それはいくつかの特定の日付のnullを返しています。特定の日付のNSDateFormatterがnullを返します

私はケースをデバッグするために、この機能をした:

- (void) debugTest:(NSString *)dateStr{ 

    NSLog(@"String: %@", dateStr); 

    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"yyyy-MM-dd"]; 

    NSDate *dateObj = [df dateFromString: dateStr]; 

    NSLog(@"Date: %@", dateObj); 

} 

これは、いくつかの日付の私のログ出力されます:それは日付のみ2012-10-21にnullを返しているのはなぜ

String: 2012-10-18 
Date: 2012-10-18 03:00:00 +0000 
String: 2012-10-19 
Date: 2012-10-19 03:00:00 +0000 
String: 2012-10-20 
Date: 2012-10-20 03:00:00 +0000 
String: 2012-10-21 
Date: (null) 
String: 2012-10-22 
Date: 2012-10-22 02:00:00 +0000 
String: 2012-10-23 
Date: 2012-10-23 02:00:00 +0000 

私は2011-10-01 to 2014-11-01から間隔をおいて他のテストを行なったし、次の日付はnullを返しました:

2011-10-16, 2012-10-21, 2013-10-20, 2014-10-19 

が、これはバグのいくつかの種類ですか?私は何か間違っている?

+0

関連する? http://stackoverflow.com/a/4265130/343955 – adarshr

+0

私は他の質問の解決策を試しましたが、私のために働いていませんでした。私は問題が異なると思う。 – Rafael

+0

コードは正常に動作します。それはリストの外にあるものです。私は文字列が範囲外になることを期待しています。残りのテストコードを投稿してください。 – madmik3

答えて

4

私はちょうど同じ問題を得る誰かの場合には登録して自分の質問にお答えします:

私は日付フォーマッタ [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];[df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];に加えます。

だから、私の新しいコードは次のとおりです。

- (void) debugTest:(NSString *)dateStr{ 

    NSLog(@"String: %@", dateStr); 

    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 
    [df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
    [df setDateFormat:@"yyyy-MM-dd"]; 

    NSDate *dateObj = [df dateFromString: dateStr]; 

    NSLog(@"Date: %@", dateObj); 

} 

私は2つのプロパティは、問題を修正設定、問題はデバイスの設定に関連していたと思います。

+0

それは私のために働かなかった。私はまだ部分的な結果を得ています。いくつかのヌル値といくつかの日付文字列。どのようにあなたはそれを動作させることができましたか? – AJ112

+0

私は正確に私が投稿し、私のために働いた。しかし、私はこれをずっと前から行っていました。最新のiOSバージョンでこれがまだ動作しているかどうかは分かりません。 – Rafael

関連する問題