如何减去日期成分?

How to subtract date components?

今天是 Friday,根据 NSCalendar6。我可以使用以下

Calendar.current.component(.weekday, from: Date())

如何获取上周 Saturday 的工作日部分,应该是 7

如果我这样做 Calendar.current.component(.weekday, from: Date()) - 6。我收到的 0 不是有效组件。

试试这个,你必须先得到日期然后再从中减去:

var dayComp = DateComponents(day: -6)
let date = Calendar.current.date(byAdding: dayComp, to: Date())
Calendar.current.component(.weekday, from: date!)

为此,您首先需要使用 calendar.date(byAdding:value:to:) 获取该日期,然后从中获取日期编号。

extension Date {
    func getDateFor(days:Int) -> Date? {
         return Calendar.current.date(byAdding: .day, value: days, to: Date())
    }
}

现在只需使用这样的功能就可以开始你的生活了。

if let date = Date().getDateFor(days: -6) {
    print(Calendar.current.component(.weekday, from: date))
}

您可以使用日历和日期组件并将所有内容放在日期扩展中,例如:

(Swift 4.1)

extension Date {
    func removing(minutes: Int) -> Date? {
        let result =  Calendar.current.date(byAdding: .minute, value: -(minutes), to: self)
        return result
    }
}