如何减去日期组件?

Cod*_*221 12 nscalendar ios swift

就像今天一样Friday,这是6根据NSCalendar.我可以通过使用以下内容得到这个

Calendar.current.component(.weekday, from: Date())
Run Code Online (Sandbox Code Playgroud)

我怎么得到Saturday上周的工作日组件,应该是7哪个?

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

Tj3*_*j3n 14

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

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


Nir*_*v D 6

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

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

现在只需使用这样的功能,让你的日子.

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