質問内容
localeを設定するとcalenderも変更される、と思っていますが、
これは正しい認識でしょうか?
また、これが正しいならそれについて記載された公式のリファレンス等ありますでしょうか?
(この内容について確信が持てず、、)
詳細
例えば以下のように
"2000/8/24"をDate型に変換した際に、このdateは端末の暦の設定に依存して
値が変わるという認識でした。
swift
1let dateString = "2000/8/24" 2let formatter = DateFormatter() 3formatter.dateFormat = "yyyy/MM/dd" 4formatter.locale = Locale(identifier: "ja_JP") 5let date = formatter.date(from: dateString) 6print("date: (date!)")
この認識は例えばこの記事の下記内容などからそのように思っていました。
これを実行してみると通常の設定ではdateは正しく2017/8/12と取得されます。
しかし、例えばiPhoneの設定から日付を西暦ではなく「和暦」にしてみるとどうでしょう?
すると4005/8/12と取得されてしまいます。
つまり想定される値は
端末の言語設定(設定>一般>言語と地域)により下記のように変更されることでした。
- 西暦: 2000-08-23 15:00:00 +0000
- 和暦: 3988-08-23 15:00:00 +0000
でしたが、実際には西暦/和暦共に2000-08-23 15:00:00 +0000
が出力されていました。
そこでformatter
のlocale、calenderの値を出力してみたところ下記のようになっていました。
locale: ja_JP (fixed) calender:gregorian (fixed)
従ってlocaleを設定するとcalenderも変更される、と思っていますが、
これは正しい認識でしょうか?
localeを設定し、暦が変更されているので端末の影響を受けていない、という解釈です。
また、これが正しいならそれについて記載された公式のリファレンス等ありますでしょうか?
(この内容について確信が持てず、、)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/01 11:38 編集
2020/02/01 15:16
2020/02/03 01:08 編集