Swift 日付操作
#Date コンピュータの内部表現で日付時刻を管理 #DateComponents 年や月、日、時間といったフィールドを個別に管理 各フィールドの値は、使用する暦によって異なる可能性がある。 #Calendar Calendar型のメソッドを経由して、DateオブジェクトとDateComponentsオブジェクトの中身を相互変換する
import Foundation
// dateの月の月末月初めを計算します。
let date = Date()
let calendar = Calendar(identifier: .gregorian)
// 年月日時分秒のDateComponentsを作る(この時点ではdateと一致したものになっている)
var comp = calendar.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date)
// ここで1日の0時0分0秒に設定します
comp.day = 1
comp.hour = 0
comp.minute = 0
comp.second = 0
// DateComponentsをDateに変換します
let monthBeginningDate = calendar.date(from: comp)
// その月が何日あるかを計算します
let range = calendar.range(of: .day, in: .month, for: date)
let lastDay = range?.count
// ここで月末に日を変えます
comp.day = lastDay
let monthEndDate = calendar.date(from: comp)
import Foundation
// 現在の日時を取得
var now = Date()
// システムのカレンダーを取得(デフォルトのカレンダーだとシステムのロケールによって異なる結果になる可能性があるため西暦を指定)
var cal = Calendar(identifier: .gregorian)
cal.locale = Locale(identifier: "ja_JP")
// 現在時刻のDateComponentsを取り出す
var dataComps = cal.dateComponents([.year, .month, .day, .hour, .minute], from: now)
print("\(dataComps.year!)年\(dataComps.month!)月\(dataComps.day!)日 \(dataComps.hour!)時\(dataComps.minute!)分")