2019年5月10日金曜日

iOSの令和元年が始まる

iOS12.3で「令和」が対応されるみたい。
(現時点で、iOS12.3はbeta 5)

これ関連で、バグを仕込んでしまっていたようで、今日は修正をしていた。

たとえば、
平成の日付: 2019-04-09 17:04:38 +0000 から、その日の0:00を求めようとしたとき。

let date1:Date = Date().addingTimeInterval(-3600 * 24 * 30) //平成の適当な日時
print("date1:", date1)

let cal = Calendar.current
let comp = cal.dateComponents([.year, .month, .day], from: date1)
let date2 = cal.date(from: comp)
print("date2:", date2 ?? "nil")

の結果は、

date1: 2019-04-09 17:04:38 +0000
date2: 2049-04-09 15:00:00 +0000

...と、30年先の日時になってしまう。
もちろん、iPhoneのカレンダーが西暦の場合は大丈夫。和暦設定にしている時のみ。


DateComponentを使った日時の計算には、Calendar(identifier: .gregorian) を使いましょう...


P.S.
0:00 の日時の算出には、CalendarのstartOfDay が使えます。
• • •