[iOS] 日付表示向けの文字列を取得する

本記事では、日付表示向けの文字列を取得する実装を紹介します。
2021.04.09

はじめに

CX事業本部の平屋です。

本記事では、日付表示向けの文字列を取得する実装を紹介します。ここでの文字列とは、曜日の文字列(日曜日,月曜日...)、月の文字列(1月,2月...)などのことです。

検証環境

  • macOS Catalina 10.15.7
  • Xcode Version 12.4

曜日の文字列の取得

さっそく実装を紹介していきます。

Calendarのプロパティを使用する

CalendarweekdaySymbolsを使用すれば曜日の文字列を取得できます。

Locale: ja_JP

var calendar = Calendar(identifier: .gregorian)
calendar.locale = Locale(identifier: "ja_JP")
print("weekdaySymbols: \(calendar.weekdaySymbols)")

/* 出力結果: 
weekdaySymbols: ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"]
*/

Locale: en_US

var calendar = Calendar(identifier: .gregorian)
formatter.locale = Locale(identifier: "en_US")
print("weekdaySymbols: \(calendar.weekdaySymbols)")

/* 出力結果: 
weekdaySymbols: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
*/

DateFormatterのプロパティを使用する

DateFormatterにも同名のプロパティがあり、同じ文字列が返されるようでした。

Locale: ja_JP

let formatter = DateFormatter()
formatter.locale = Locale(identifier: "ja_JP")
print("weekdaySymbols: \(calendar.weekdaySymbols)")

/* 出力結果: 
weekdaySymbols: ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"]
*/

Locale: en_US

let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US")
print("weekdaySymbols: \(calendar.weekdaySymbols)")

/* 出力結果: 
weekdaySymbols: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
*/

その他の文字列の取得

曜日以外の文字列も同様の手順で取得できます。

Calendarのプロパティを使用する

Locale: ja_JP

var calendar = Calendar(identifier: .gregorian)
calendar.locale = Locale(identifier: "ja_JP")
print("shortWeekdaySymbols: \(calendar.shortWeekdaySymbols)")
print("veryShortWeekdaySymbols: \(calendar.veryShortWeekdaySymbols)")
print("weekdaySymbols: \(calendar.monthSymbols)")
print("shortMonthSymbols: \(calendar.shortMonthSymbols)")
print("veryShortMonthSymbols: \(calendar.veryShortMonthSymbols)")
print("longEraSymbols: \(calendar.longEraSymbols)")
print("eraSymbols: \(calendar.eraSymbols)")
print("quarterSymbols: \(calendar.quarterSymbols)")
print("shortQuarterSymbols: \(calendar.shortQuarterSymbols)")
print("amSymbol: \(calendar.amSymbol)")
print("pmSymbol: \(calendar.pmSymbol)")

/* 出力結果: 
shortWeekdaySymbols: ["日", "月", "火", "水", "木", "金", "土"]
veryShortWeekdaySymbols: ["日", "月", "火", "水", "木", "金", "土"]
weekdaySymbols: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
shortMonthSymbols: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
veryShortMonthSymbols: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]
longEraSymbols: ["紀元前", "西暦"]
eraSymbols: ["紀元前", "西暦"]
quarterSymbols: ["第1四半期", "第2四半期", "第3四半期", "第4四半期"]
shortQuarterSymbols: ["Q1", "Q2", "Q3", "Q4"]
amSymbol: 午前
pmSymbol: 午後
*/

Locale: en_US

var calendar = Calendar(identifier: .gregorian)
calendar.locale = Locale(identifier: "ja_JP")
print("shortWeekdaySymbols: \(calendar.shortWeekdaySymbols)")
print("veryShortWeekdaySymbols: \(calendar.veryShortWeekdaySymbols)")
print("weekdaySymbols: \(calendar.monthSymbols)")
print("shortMonthSymbols: \(calendar.shortMonthSymbols)")
print("veryShortMonthSymbols: \(calendar.veryShortMonthSymbols)")
print("longEraSymbols: \(calendar.longEraSymbols)")
print("eraSymbols: \(calendar.eraSymbols)")
print("quarterSymbols: \(calendar.quarterSymbols)")
print("shortQuarterSymbols: \(calendar.shortQuarterSymbols)")
print("amSymbol: \(calendar.amSymbol)")
print("pmSymbol: \(calendar.pmSymbol)")

/* 出力結果: 
shortWeekdaySymbols: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
veryShortWeekdaySymbols: ["S", "M", "T", "W", "T", "F", "S"]
weekdaySymbols: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
shortMonthSymbols: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
veryShortMonthSymbols: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"]
longEraSymbols: ["Before Christ", "Anno Domini"]
eraSymbols: ["BC", "AD"]
quarterSymbols: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"]
shortQuarterSymbols: ["Q1", "Q2", "Q3", "Q4"]
amSymbol: AM
pmSymbol: PM
*/

DateFormatterのプロパティを使用する

  • 省略(結果はCalendarのプロパティを使用した場合と同様)

さいごに

本記事では、日付表示に使用する文字列を取得する実装を紹介しました。同じようなことをしようとしている方の参考になれば幸いです。

参考資料