Open1

Swift: Date.formatted(_:)で文字列化する

kabeyakabeya

Dateを文字列にする場合、DateFormatterを使うというのがよく書いてあります。
ロケール指定したり、ちょっと面倒ですね。

iOS 15からは、Date.formatted()が使えます。

今日の日付を"2024/3/10"として得るなら、

let dateText = DateTime.now.formatted(date: .numeric, time: .omitted)

とすれば取得できます。

で、これ月を(ついでに日も)2桁、つまり03で取りたいとしたらどうするのかなということで調べました。

let dateText = Date.now.formatted(Date.FormatStyle(date: .numeric, time: .omitted).month(.twoDigits).day(.twoDigits))

こんな感じですね。これで"2024/03/10"が取得できます。

Date.FormatStyle()に次々モディファイアを適用するようなイメージです。
イニシャライザのdate: .numericの部分がないと、例えば日本語ロケールの場合2024年03月10日になってしまいます。