来自周数的 NSDate

NSDate from week number

我正在尝试使用 Swift 创建每周重复的本地通知。通知将设置为每周的第一天,并且在 10:00。当然我不想为过去的日期设置通知,所以我需要看看现在是否已经过了一周的第一天 10:00。如果没有,我将在今天 10:00 创建通知,否则下周星期一 10:00。

我创建了一个扩展来计算当前日期的周数。

    extension NSDate {

        func weekOfYear() -> Int {
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components(NSCalendarUnit.WeekOfYear, fromDate: self)
        let weekOfYear = components.weekOfYear

        return weekOfYear
        }
    }

我不能再进一步了。任何帮助表示赞赏。 问候。

您的问题有更简单的解决方案。可以使用NSCalendarnextDateAfterDate()方法:

let cal = NSCalendar.currentCalendar()
let comps = NSDateComponents()
comps.hour = 10
comps.weekday = cal.firstWeekday

let now = NSDate()
let fireDate = cal.nextDateAfterDate(now, matchingComponents: comps, options: [.MatchNextTimePreservingSmallerUnits])!

这给出了未来的第一个日期,即一周的第一天 10:00。