次のように UIDatePicker のロケールを変更しようとしています:
picker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
動作していますが、ロケールを設定した後、ピッカーは時刻形式のシステム設定を満たしていません。つまり、24 時間/(午前/午後) です。私が間違っていることは何ですか?
次のように UIDatePicker のロケールを変更しようとしています:
picker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
動作していますが、ロケールを設定した後、ピッカーは時刻形式のシステム設定を満たしていません。つまり、24 時間/(午前/午後) です。私が間違っていることは何ですか?
あなたは何も悪いことをしていません。日付/時刻の形式はロケールによって決まります。en_US は 12 時間 AM/PM 形式を使用します: http://demo.icu-project.org/icu-bin/locexp?_=en_US
ユーザーが希望する時間形式をサポートしたい場合、マークされた答えはまったく正しくありません。
ピッカー ロケールをデフォルト (デバイスのロケール) に設定すると、ピッカーはその特定のロケールの 12/24 時間形式を使用します。米国では 12 時間、たとえば英国では 24 時間です。
ただし、ユーザーがデバイスを手動で 12/24 に変更すると、ピッカーはこのスタイルを使用しません。
ピッカーが日付と時刻ではなく時刻のみを使用している場合は、いくつかのアプローチを使用してこれを解決できます。
日付と時刻を使用している場合は、ロケールをデバイスのロケールに設定して、適切な言語と形式で日付を取得する必要がありますが、これにより、デバイスに設定されている時刻形式が無視されます。