【Swift】DateのおすすめExtension

Swift

今回は実際に僕が使用している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)年"

コメント

タイトルとURLをコピーしました