How to subtract date components?

2020-07-03 07:52发布

As today is Friday, which is 6 according to NSCalendar. I can get this by using the following

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

How do I get weekday component of Saturday last week, which should be 7?

If I do Calendar.current.component(.weekday, from: Date()) - 6 . I am getting 0 which is not valid component.

3条回答
Explosion°爆炸
2楼-- · 2020-07-03 08:16

For that first you need to get that date using calendar.date(byAdding:value:to:) and then get day number from it.

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

Now simply use thus function and get your days.

if let date = Date().getDateFor(days: -6) {
    print(Calendar.current.component(.weekday, from: date))
}
查看更多
▲ chillily
3楼-- · 2020-07-03 08:25

you can use calendar and date components and put everything in a Date extension, something like:

(Swift 4.1)

extension Date {
    func removing(minutes: Int) -> Date? {
        let result =  Calendar.current.date(byAdding: .minute, value: -(minutes), to: self)
        return result
    }
}
查看更多
再贱就再见
4楼-- · 2020-07-03 08:33

Try this, you have to get the date first then subtract again from it:

var dayComp = DateComponents(day: -6)
let date = Calendar.current.date(byAdding: dayComp, to: Date())
Calendar.current.component(.weekday, from: date!)
查看更多
登录 后发表回答