2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2023-04-25

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スタイルを指定した場合でも、日付と時刻の書式を個別に指定できます。

最後に

iOSアプリ開発をしています。
主にSwiftですが、最近は熱が入ってきてFlutterも🦾
色々やってます。もし良かったら見てってください。

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?