PHPでいうところのdate("ymd",strtotime("2020-01-01 00:00:00")) みたいなことをやりたいわけです。

今回のゴール

2021-01-11 12:50:10 みたいな文字列を受け取ったら、例えば好きに

01-11-2021 にしてみたり、

11-01-21 にしてみたりとかをできるようにしたいです。

流れ

例のごとく型にうるさいです。

文字列を受け取る(String)

Date型にする

Date型のデータから、好きな形のフォーマットの文字列に出力する

///参考サイトから拝借
///文字列を投げて、正常に変換できたらそのままリターン、できなかったら現在時刻をリターン
func StringToDate(dateValue: String, format: String) -> Date {
    let dateFormatter = DateFormatter()
    dateFormatter.calendar = Calendar(identifier: .gregorian)
    dateFormatter.dateFormat = format
    return dateFormatter.date(from: dateValue) ?? Date()
}

let dateFormatter = DateFormatter()
///出力したいフォーマット
dateFormatter.dateFormat = "MM-dd"
//変換する文字列
let dateStr = "2022-03-22 11:22:33"

///文字列変換
let dateString = dateFormatter.string(from: StringToDate(dateValue: dateStr, format: "yyyy-MM-dd HH:mm:ss"))

///中身確認
print(dateString)

で、結果は

03-22

になるわけですね。

まぁ、これでどんな感じのフォーマットがきても好き放題変換できますね。

コメント