次の月曜日の午後三時が取得したい
あるあるですね。
手順
- 次の月曜日のNSDateを取得する
- 時間を午後三時にセットしたNSDateを取得する
# Code
//現在時刻
var date = NSDate()
var calendar = NSCalendar.currentCalendar()
let baseComps = calendar.components(.CalendarUnitWeekday, fromDate: date)
let addingComps = NSDateComponents()
//日曜日の時はこのようにすれば2-1で1日足せば良いことになる
var addingDay = 2 - baseComps.weekday
//月曜日以降の場合は、今週の月曜になってしまうため+7する
if addingDay<=0 { addingDay += 7 }
addingComps.day = addingDay
//現在時刻から次の月曜日まで時間を進める
let res = calendar.dateByAddingComponents(addingComps, toDate: date, options: nil)
//次に時刻を指定
var comps = calendar.components(NSCalendarUnit.CalendarUnitWeekday|NSCalendarUnit.CalendarUnitYear|NSCalendarUnit.CalendarUnitMonth|NSCalendarUnit.CalendarUnitDay|NSCalendarUnit.CalendarUnitHour|NSCalendarUnit.CalendarUnitMinute|NSCalendarUnit.CalendarUnitSecond, fromDate: res!)
//15:00にセットする
comps.hour = 15
comps.minute = 0
comps.second = 0
//NSDateを吐き出して終わり
let nextLimit = calendar.dateFromComponents(comps)
加算とセットで二回NSDateを吐き出すのがちょっとカッコ悪いけどこれで大丈夫です。