【SwiftUI】DateとStringの型変換(キャスト)の方法

この記事では【SwiftUI】DateとStringの型変換(キャスト)の方法について解説します。

iOSのアプリ開発で日時を扱う動作を行う際、DatePickerを利用する機会が多いと思います。

DatePickerはBindingのDate型の値を選択している値として利用しているため、その後選択した値をString型として扱う際は、型変換を行う必要があります。

 

また、APIを利用する際は、バックエンド側が扱う日時に型に合わせて、値のやり取りを行う必要があるので、Date⇔String間での変換、さらにYYYY-MM-DDなどフォーマットの調整も必要となります。

今回は、API接続での実際の開発でよく利用される方法をメインに、DateとStringの型変換(キャスト)の方法の紹介します。

 

◆動作検証環境

・ローカル環境:mac Catalina
・XCode:12.1
・SwiftUI:2.0
スポンサードリンク

Date型からString型への型変換(キャスト)

 

バックエンド側の日時YYYY-MM-DD に対応するように、Date型をフォーマットを指定してString型に変換する方法です。

Calendarクラスを利用する方法

 
※月、日が一桁の場合は0が含まれず1桁の表示になりますが、Djang-REST-Frameworkではこちらでも値を渡せます。

DateFormatterクラスを利用する方法

 
 

String型からDate型への型変換(キャスト)

 

バックエンドから値を取得し、DatePickerなどDate型として利用する際に利用する方法です。

 

例えば、Django-REST-Frameworkから、YYYY-MM-DD のフォーマットのString型をDate型に変換する場合です。

format: "yyyy/MM/dd" の部分は受け取る値のフォーマットによって変更する必要があります。

日時と時刻を含む場合は、yyyy/MM/dd HH:mm:ss などです。

 

 

スポンサードリンク

String型からString型へのフォーマット変換

状況によってはString型で管理された日付の値を、違うString型のフォーマットにして扱いたい場合もあると思います。

 

他にも方法はあると思いますが、ここでは、String→Date→String型と型変換しながら、フォーマットも変える方法を紹介します。

 

例えば下記のStringの値があった場合を例として解説を行います。

 

String→Date→String型と型変換しながら、フォーマットも変えるメソッドを下記のように作成します。

 

 

iOS14からのTextでのDate型の表示

 

iOS14からText()Date 型を表示する際に、styleを指定する事でString 型に変換しなくても表示できるようになりました。

 


以上、SwiftUIでの、DateとStringの型変換(キャスト)の方法、iOS14からのTextでのDate型の表示について解説しました。