📘

[Swift]formattedを利用して年月、時間、曜日を個別にString型で取り扱う方法

2022/03/05に公開

はじめに

iOS15から使用できるformattedを使用するとあらゆるものを簡単に文字列にすることができます。
今回はformattedを利用して年、月、日、時間、分、秒、曜日のそれぞれをString型で個別に取り出すことも可能なので使用の方法を紹介したいと思います。
こちらドキュメント

Availability

・iOS 15.0
・Xcode 13.0

基本的な使い方

Date型のプロパティに対して.formatted(.dateTime)とする事でStringで年、月、日、時間、分、秒、曜日それぞれ扱う事ができます。使用方法の具体例は下記の実装のコードを参考にしてください。
年月日などそれぞれ対応するコードは下記の表の通りです。

時間 曜日
.year() .month() .day() .hour() .minute() .second() .week()

実装

@State var date = Date()
var body: some View {
    VStack {
    Text(date.formatted(.dateTime.hour().minute().second()))
    }
    .onAppear {
        Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in
            date = Date.now
        }
    }
}

上記のコードで時間、分、秒を1秒ずつ表示してくれます。
Text(date.formatted(.dateTime.hour().minute().second()))
の1行で時間、分、秒の表示を行っています。
Timer.scheduledTimer(withTimeInterval: 1, repeats: true)では1秒ごとにViewを更新してくれています。

まとめ

以前にこちらの記事を書きましたが
https://zenn.dev/oka_yuuji/articles/36a6ec42803a11

こちらのがシンプルに実装できます。

Discussion