2009-11-26 8 views
5

NSDateFormatterを使用していますが、問題はその一貫性にあります。私がkCFDateFormatterMediumStyleを使用すると、2009年11月26日のようなフォーマットがシミュレータで提供されますが、デバイス上では "26-Nov-2009"と表示されます。NSDateFormatterはデバイスとシミュレータで異なる値を返しますか?回避策は何ですか?

私は質問があります。これは近い将来NSFormatterが信頼できるかどうか、あるいはアップルのアップデートによってスタイルが再び変更できるのでしょうか?

+0

の回答から概要が設定 ですNSDateFormatterの日付書式は一貫性の日付スタイルではありません –

答えて

3

NSDateFormatterは、デバイスの国際設定に基づいて、日付をユーザーの好みに合わせて書式設定します。したがって、日付が世界中に表示されるさまざまな方法の量のために、この文字列が一貫しているとは決して期待できません。

日付を文字列としてフォーマットする最も良い方法は、NSDateComponentsを使用して文字列に変換することです(ウェブサーバーなどに与えるために使用する)。

+3

これは100%正確ではありません。 NSDateFormatterは、kCFDateFormatterMediumStyleなどの設定を指定する場合にのみ、ユーザーの設定(yes)にフォーマットします。必要に応じて、簡単に正確なフォーマット文字列を設定することができます。 –

17

上記の他の回答は技術的には正しいものの、あなたが探している解決策は得られません。ユーザーのロケールを使用して(と、など、あなたに有用な結果を提供するつもりされていない)にNSDateFormatterのデフォルトながら、あなたが一貫性のある結果を得るために特定のロケールを要求することができます。

NSDateFormatter *frm = [[NSDateFormatter alloc] init]; 
[frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 

NSLocale *en_US = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[frm setLocale:en_US]; 
[en_US release]; 
関連する問題