4

次のように UIDatePicker のロケールを変更しようとしています:

  picker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

動作していますが、ロケールを設定した後、ピッカーは時刻形式のシステム設定を満たしていません。つまり、24 時間/(午前/午後) です。私が間違っていることは何ですか?

4

3 に答える 3

0

あなたは何も悪いことをしていません。日付/時刻の形式はロケールによって決まります。en_US は 12 時間 AM/PM 形式を使用します: http://demo.icu-project.org/icu-bin/locexp?_=en_US

于 2013-04-23T13:40:04.520 に答える
0

ユーザーが希望する時間形式をサポートしたい場合、マークされた答えはまったく正しくありません。

ピッカー ロケールをデフォルト (デバイスのロケール) に設定すると、ピッカーはその特定のロケールの 12/24 時間形式を使用します。米国では 12 時間、たとえば英国では 24 時間です。

ただし、ユーザーがデバイスを手動で 12/24 に変更すると、ピッカーはこのスタイルを使用しません。

ピッカーが日付と時刻ではなく時刻のみを使用している場合は、いくつかのアプローチを使用してこれを解決できます。

  1. デバイスが 12/24 かどうかを手動で検出し、ロケール en_US を 12 時間に、en_GB を 24 時間に選択します。
  2. ロケールを設定しないでください。timeStyle を NSDateFormatterShortStyle に設定するだけです。これにより、デバイス設定から選択された時刻形式が自動的に選択されます。

日付と時刻を使用している場合は、ロケールをデバイスのロケールに設定して、適切な言語と形式で日付を取得する必要がありますが、これにより、デバイスに設定されている時刻形式が無視されます。

于 2016-06-12T17:36:32.717 に答える