今回は実際に僕が使用しているDate型のおすすめExtensionを紹介します。
環境
- Xcode13.2.1
- 動作の確認はiOS15 iPhone12 Pro MAXで行っています
準備
まずは準備として以下のDateFormatterを用意します。
private let kShortDateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .gregorian)
formatter.dateFormat = "yyyy/M/d"
return formatter
}()
private let kMediumDateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .gregorian)
formatter.dateFormat = "yyyy/M/d HH:mm"
return formatter
}()
年月日だけのフォーマッターと年月日 時分までのフォーマッターです。
日付の変換処理
次に以下のような変数をDateのExtensionとして記載します。
extension Date {
var shortDateString: String {
return kShortDateFormatter.string(from: self)
}
var mediumDateString: String {
return kMediumDateFormatter.string(from: self)
}
}
こうすることで、以下のように簡単にDate型を年月日や年月日時分の文字列に変換することができます。
let date = Date()
shortDateLabel.text = date.shortDateString
mediumDateLabel.text = date.mediumDateString
年だけ、月だけ、日だけ取得する
Date型のデータから、年だけを取得したい、月だけを取得したいということが時々あると思います。
そういった時のために以下のようなExtensionを用意しています。
extension Date {
var year: Int {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents([.year], from: self)
return components.year!
}
var month: Int {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents([.month], from: self)
return components.month!
}
var day: Int {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents([.day], from: self)
return components.day!
}
}
これらを用意しておくことで、以下のように年、月、日を簡単に取得することができます。
let date = Date()
yearLabel.text = "\(date.year)年"
monthLabel.text = "\(date.month)年"
dayLabel.text = "\(date.day)年"
コメント