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-dd | 2023-04-26 |
dd.MM.yyyy | 26.04.2023 |
dd/MM/yyyy | 26/04/2023 |
yyyy.MM.dd GGG | 2023.04.26 AD |
yyyy.MM.dd HH:mm:ss zzz | 2023.04.26 10:15:30 GMT |
EEE, dd MMM yyyy HH:mm:ss Z | Tue, 26 Apr 2023 10:15:30 +0000 |
MMMM dd, yyyy h:mm a | April 26, 2023 10:15 AM |
yyyy年M月d日 H:mm | 2023年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
スタイルを指定した場合でも、日付と時刻の書式を個別に指定できます。