web-dev-qa-db-ja.com

デバイスの設定ではなくアプリの設定に基づいて、UIDatepickerで12時間および24時間形式で時間を表示する

私の問題は、アプリに12時間と24時間の時間形式で切り替わるスイッチがあることです。それに応じてラベルの時間を表示していますが、UIDatePicker時間は変更されていません。時間は、デバイスの時間設定の形式。アプリの設定に従って、UIDatePickerに時間を表示することは可能ですか?デバイスの時間設定とは異なる場合があります。 UIDatePickerがデバイス設定のみを尊重することをどこかで読みましたが、それでも、アプリの設定に基づいてUIDatePickerで12時間と24時間の形式で時間を表示できるかどうか尋ねたいと思います。

私を助けてください。どんな提案も大歓迎です!

23
Gypsa

UIDatePickerの場合、時刻形式を24または12に変更することはできません。これは、setting.appのユーザーローカル設定によって異なります。

18

このコードを試して、24時間形式をDatePickerに表示します。

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"NL"];
[self.datePicker setLocale:locale];
38
Avik

Swiftの場合

    // myDatePicker is yourUIDatePicker Outlet
    @IBOutlet weak var myDatePicker: UIDatePicker!

    // For 24 Hrs 
    myDatePicker.locale = NSLocale(localeIdentifier: "en_GB") as Locale

    //For 12 Hrs
    timePickerView.locale = NSLocale(localeIdentifier: "en_US") as Locale
26
ak2g

Swift 4 ak2gの回答のバージョン:

// myDatePicker is yourUIDatePicker Outlet
@IBOutlet weak var myDatePicker: UIDatePicker!

// For 24 Hrs 
myDatePicker.locale = Locale(identifier: "en_GB")

//For 12 Hrs
myDatePicker.locale = Locale(identifier: "en_US")
10

単一のコード行は必要ありません。ストーリーボードからロケールを設定することもできます。スクリーンショットを添付しました。

enter image description here

プログラムでこれを行うには、次のコードを記述することもできます。

dateTimePicker.locale = Locale(identifier: "en_GB")
8
Jaydeep Vyas

もっと簡単な方法を見つけて、ストーリーボードのUIDatePicker属性インスペクターをクリックして、ロケールを「英語(ヨーロッパ)」に設定します。これにより、AM/PMの切り替えがなくなり、時刻が24時間形式に設定されます。

3
naveedez

代わりに結果を簡単にフォーマットする

ローカルデバイスは24時間ではないため。 12時間形式の選択時間は問題ありません。主にこの問題は、サーバーに時間を送信しようとしたときに発生します。 24時間形式で要求するサーバー。

ただし、ユーザーにとっては、24時間形式ではなく12時間形式を使用する方が簡単です。ただし、サーバーは通常24時間形式である必要があります。

あなたが言及したので

デバイスの設定ではありません

私はあなたが電話でユーザーのデフォルト設定を中断することなくこれを実現しようとしていると仮定することができます。しかし、問題がビューにある場合、

myDatePicker.locale = NSLocale(localeIdentifier: "en_GB")

それを行う唯一の方法です。

24h形式で表示するのではなく、結果値を24h形式に変換しました。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
print("\(pickerView.date)") // 10:30 PM
let dateSelect = dateFormatter.string(from: pickerView.date)//pickerView = to your UIDatePicker()
self.tfclosing.text = dateSelect // 22:30
3
Muhammad Asyraf

UIDatepickerにロケールプロパティを設定して、ユーザーのロケールがデフォルトにならないようにします。

これが documentation です。そのため、必ず 言語ではなく国 を設定してください。

編集:実際、iOS 5.0ではロケールが廃止されたようです。 Appleは人々がそれを上書きすべきではないと思ったと思います。

2
Lawrence Wu