NSDateFormatterは、デバイスとシミュレータで異なる値を提供しますか?回避策は何ですか?

StackOverflow https://stackoverflow.com/questions/1803169

質問

NSDateFormatterを使用していますが、問題はその一貫性にあります。 kCFDateFormatterMediumStyleを使用すると、「2009年11月26日」という形式になります。シミュレーターではありますが、デバイスでは「26-Nov-2009」と表示されます。

今、私は質問があります、このNSFormatterは近い将来信頼できる手段ですか、それともAppleからの更新はスタイルを再び変更できますか?

役に立ちましたか?

解決

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

日付を文字列としてフォーマットする最適な方法を見つけました(Webサーバーなどに与えるために使用するには)NSDateComponentsを使用して、これらを文字列に変換します。

他のヒント

上記の他の回答は技術的には正しいものの、探している解決策を提供するものではありません。 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];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top