4

iOS の NSDateFormatter で、シミュレーターと実際のデバイスの両方で Settings/General/International/Calendar が日本語または仏教徒に設定されている場合に問題が発生します。言語が何に設定されているかは問題ではないようで、地域形式は物事を再配置するだけです (しかし、それでも悪いです)。以下の結果はすべて、「Language」= 英語、「Region Format」= 日本の場合です。

これが私のコードです(ARCが有効になっています):

// Configure the Date Formatter
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale currentLocale]];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];

// Format the date string
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];

そして結果:

  • iOS 4.3 (カレンダー = 日本語)、dateString = “平成 24/04/13”</li>
  • iOS 5.1 (カレンダー = 日本語)、dateString = “H.24/04/09”</li>
  • iOS 4.3 (カレンダー = 仏教)、dateString = “BE2555/04/13”</li>
  • iOS 5.1 (カレンダー = 仏教)、dateString = “BE2555/04/13”</li>

このリンクを見つけました: http://www.cocoanetics.com/2011/12/ios-5-breaking-nsdateformatter/、これは興味深いですが、実際には解決策を示していません。これも見つけました: NSDateFormatter and Japanese calendar、コードを少し変更しました:

[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale preferredLanguages] objectAtIndex:0]]];    

次に、私の結果は次のとおりです(これらはすべて私には間違っているように見えます。これは本質的にUS MM / DD / YY形式です):

  • iOS 4.3 (カレンダー = 日本語)、dateString = “4/13/12”</li>
  • iOS 5.1 (カレンダー = 日本語)、dateString = “4/13/12”</li>
  • iOS 4.3 (カレンダー = 仏教)、dateString = “4/13/12”</li>
  • iOS 5.1 (カレンダー = 仏教)、dateString = “4/13/12”</li>

上記のすべての結果のうち、私には正しいように見えるのは、Calendar = Japanese の iOS4.3 だけです。

何か案は?

4

1 に答える 1

4

地域は、言語ではなく、日付形式に影響を与えます。ユーザーの地域を使用するようにフォーマットを設定しています。

[dateFormatter setLocale:[NSLocale currentLocale]];

すべてのユーザーで一貫した形式が必要な場合は、システムのローカルに設定できます。

[dateFormatter setLocale:[NSLocale systemLocale]];

于 2015-01-21T21:42:04.297 に答える