NSDateFormatterは、デバイスとシミュレータで異なる値を提供しますか?回避策は何ですか?
-
05-07-2019 - |
質問
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];
所属していません StackOverflow