iOS の時間表示設定を取得する

iOS の日付と時刻の設定の24時間表示が ON になっていれば24時間表示用の UILabel を、そうでなければ12時間表示用の UILabel を表示するという用に、時間表示設定によって View を切り替えたいと思ってググってみたのですが、解決策が見つからなかったので軽く調査してみました。

Locale の調査

DateFormatter を扱う時等に、強制的に24時間表記で時刻を扱えるようにと NSLocale.system を使用したことを思い出して、Locale が時間表示設定の情報を持っているのではと思って確認してみました。

(lldb) po NSLocale.system
▿  (fixed)
  - identifier : ""
  - kind : "fixed"

identifier と kind しか持っていない、、、

念のために24時間表示設定がONの時の Local.current も確認してみました。

(lldb) po NSLocale.current
▿ ja_JP (current)
  - identifier : "ja_JP"
  - kind : "current"

Locale が時間表示設定の情報を持っているわけではなさそうですね、、、


となれば、次は———

と別の方法で調査できたらよかったのですが、思いつく方法がなかったし、ググっても見つからないということは時間表示設定はそもそも取得できないのではと思ったので、以下の方法で無理やり判別することにしました。

if String(describing: Date()).contains("午") {
    print("12時間表示")
} else {
    print("24時間表示")
}

もっと良い判別方法があれば是非とも教えていただきたいです、、、