【Swift】DateFormatterで日本時間を表示する

Swift

DateFormatterとは

DateFormatterは、DateオブジェクトとStringオブジェクトの間で相互変換を行うために使用されるクラスです。Dateオブジェクトは、日付と時間を表し、Stringオブジェクトは、テキストとして表現された日付と時間を表します。

DateFormatterを使用すると、DateオブジェクトとStringオブジェクトの変換に使用する形式を指定できます。日付や時間の表現方法は、言語や地域によって異なるため、DateFormatterを使用することで、ローカライズされた日付や時間の表現を取得することができます。

例文

まずは、DateFormatterを用いて日本時間に変換します。

以下のコードでは、dateFormatプロパティに"yyyy/MM/dd HH:mm:ss"というフォーマットを指定しています。

let formatter = DateFormatter()
formatter.locale = Locale(identifier: "ja_JP")
formatter.dateFormat = "yyyy/MM/dd HH:mm:ss"
formatter.timeZone = TimeZone(identifier: "Asia/Tokyo")
let japanTime = formatter.string(from: Date())
print(japanTime) // 2022/05/01 12:34:56

TimeZone(identifier:)でタイムゾーンを指定することで、日本時間に変換することができます。

この場合、現在の日本時間が表示されます。

応用

TimeZoneオブジェクト

TimeZoneオブジェクトには、タイムゾーンを識別する文字列を指定することができます。この文字列は、オペレーティングシステムのタイムゾーンデータベースに存在するタイムゾーンのIDです。たとえば、「America/New_York」は、アメリカ東部夏時間のタイムゾーンを表します。これらのIDについては、公式のタイムゾーンデータベースから確認できます。

個人的な主要都市を紹介します。

Asia/Tokyo日本標準時
America/New_Yorkアメリカの東部標準時
America/Los_Angelesアメリカの太平洋標準時
Europe/Londonイギリス標準時
Europe/Paris中央ヨーロッパ標準時
Australia/Sydneyオーストラリアの東部標準時

DateFormatterオブジェクト

DateFormatterオブジェクトを使用して、日付と時刻の書式を指定することもできます。上記の例では、「yyyy-MM-dd HH:mm:ss」という書式を指定しています。この場合、年、月、日、時間、分、秒を表す数字が表示されます。他の書式も公式ドキュメントから確認できます。

個人的な主要なフォーマットを紹介します。

yyyy西暦
mm月(0埋め)
dd日(0埋め)
HH
mm
ss
E曜日
yyyy-MM-dd2023-04-26
dd.MM.yyyy26.04.2023
dd/MM/yyyy26/04/2023
yyyy.MM.dd GGG2023.04.26 AD
yyyy.MM.dd HH:mm:ss zzz2023.04.26 10:15:30 GMT
EEE, dd MMM yyyy HH:mm:ss ZTue, 26 Apr 2023 10:15:30 +0000
MMMM dd, yyyy h:mm aApril 26, 2023 10:15 AM
yyyy年M月d日 H:mm2023年4月26日 10:15

Localeクラスのidentifierプロパティ

Locale クラスの identifier プロパティに、表示したい地域設定を指定することで、異なる地域の日付や時刻を表示することができます。地域設定の一覧は、こちらのリンクを参照してください。

個人的な主要なものを紹介します。

ja_JP日本語 (Japan)
en_US英語 (United States)
zh_CN中国語 (China)
ko_KR韓国語 (South Korea)
fr_FRフランス語 (France)
es_ESスペイン語 (Spain)
de_DEドイツ語 (Germany)
it_ITイタリア語 (Italy)

和暦表示方法

DateFormatterクラスにはCalendarプロパティがあり、和暦を表すCalendarオブジェクトを指定することで和暦での表示が可能です。

以下は、和暦での日付表示の例です。

let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .japanese)
dateFormatter.dateFormat = "GGGGy年M月d日"

let date = Date()
let dateString = dateFormatter.string(from: date)

print(dateString) // 令和5年4月26日

上記の例では、Calendar(identifier: .japanese)で和暦を表すCalendarオブジェクトを作成しています。また、dateFormatにはGGGGy年M月d日を指定しています。GGGGは元号を表し、yは和暦の年を表します。Mは月、dは日を表します。

DateFormatterのstyleプロパティ

日付と時刻の書式を簡単に指定するためのオプションを提供します。以下は、主要なスタイルの説明です。

.none何もなし
.short短い形式。例: 21/12/19 や 1:30 AM
.medium中程度の形式。例: Dec 21, 2019 や 1:30:00 AM
.long長い形式。例: December 21, 2019 や 1:30:00 AM GMT+9
.full完全な形式。例: Saturday, December 21, 2019 や 1:30:00 AM Japan Standard Time

これらのスタイルは、指定されたLocaleに従って表示が変わります。styleプロパティは、書式の定義に優先します。たとえば、mediumスタイルを指定した場合でも、日付と時刻の書式を個別に指定できます。

Buy me a coffee!

SwiftSwiftUIアプリ開発未分類
シェアする
sogaをフォローする
タイトルとURLをコピーしました