はじめに
調べたところObjective-Cの情報ばかりだったのでSwift版を共有しようと思います。
こちらが元記事です。
NSDateで月末月初 ※ただしGMTに注意
コード
// dateの月の月末月初めを計算します。
let date = NSDate()
let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!
// 年月日時分秒のNSComponentsを作る(この時点ではdateと一致したものになっている)
let comp = calendar.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: date)
// ここで1日の0時0分0秒に設定します
comp.day = 1
comp.hour = 0
comp.minute = 0
comp.second = 0
// NSComponentsをNSDateに変換します
let monthBeginningDate = calendar.dateFromComponents(comp)
// その月が何日あるかを計算します
let range = calendar.rangeOfUnit(.Day, inUnit: .Month, forDate: date)
let lastDay = range.length
// ここで月末に日を変えます
comp.day = lastDay
let monthEndDate = calendar.dateFromComponents(comp)