我正在實現一個日曆視圖,並且我希望它在包含特定日期的一週開始時開始。例如。如果目標日期是星期一,2016年2月29日,與當前日曆設置爲在週日開始,我想我的觀點入手星期天,2月28日我如何從NSDate中找到一週的開始?
這似乎應該是簡單的:
let calendar = NSCalendar.currentCalendar()
let firstDate = calendar.nextDateAfterDate(targetDate,
matchingUnit: .Weekday,
value: calendar.firstWeekday,
options: .SearchBackwards)
但這種失敗:
終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',理由是: '從精確地設定一個選項{NSCalendarMatchPreviousTimePreservingSmallerUnits,NSCalendarMatchNextTimePreservingSmallerUnits,NSCalendarMatchNextTime}必須指定。'
我能得到基本上是我想:
let firstDate = calendar.nextDateAfterDate(firstDate,
matchingUnit: .Weekday,
value: calendar.firstWeekday,
options: .MatchPreviousTimePreservingSmallerUnits)?
.dateByAddingTimeInterval(-7 * 84600)
但它似乎是一個不好的做法,因爲有時候在一天的秒數不是86400
有更好的方法?
謝謝!這是一個很好的方式來做到這一點。 – Aneel
@歡迎你歡迎 –
這是實現它的很酷的方式,但夏令時有一個小問題。這可以固定用下面的代碼:'VAR startOfWeek:{的NSDate讓日期= Calendar.gregorian.dateFromComponents(Calendar.gregorian.components([YearForWeekOfYear,.WeekOfYear。],FROM日期:自));!讓dslTimeOffset = NSTimeZone.local.daylightSavingTimeOffset(for:date); return date.addingTimeInterval(dslTimeOffset); }' – artificis