2017-08-02 4 views
-1

なぜdateFormatterがnullを返すのか分かりません。コードは非常にシンプルですが、ここで間違いはありません。私もsetDateFormatを使用しようとしましたが、何の結果もありませんでした。コードの問題は何ですか?Objective-Cの日付フォーマッタがnullを返す

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
mikey.hireDate = [dateFormatter dateFromString:@"Aug 02, 2010"]; 

答えて

1

日付フォーマッタのロケールをEN_US_POSIXに設定します。そうすれば、デバイスの領域はフォーマッタを変更しません。

NSLocale *locale = [[NSLocale alloc] 
       initWithLocaleIdentifier:@"EN_US_POSIX"]; 
[dateFormatter setLocale:locale]; 
+0

ありがとうございました。それは助けになった。だから、xcodeは私のデバイスの現在の場所を使って日付のフォーマットを変更していますか?ロケールで日付フォーマッタを初期化する必要がある理由をより詳しく説明できますか? – Tigran

+0

右。日付フォーマッタは、デフォルトで常に実際のデバイスのロケールを使用します。たとえば、ユーザーが自分の携帯電話を中国語で使用している場合、英語のため「Aug」は未定義の短い月になります。 – the4kman

+0

どうもありがとうございました! – Tigran

0

あなたのコードは自分のマシンで動作します。あなたがユーザー入力から日付文字列を解析したい場合、NSDataDetectorはNSDateFormatterよりも一般に良い方法です。

関連する問題