NSCalendar, why does setting the firstWeekday doesn't effect calculation outcome?

前端 未结 3 1767
不思量自难忘°
不思量自难忘° 2020-12-19 09:31

i need to calculate the weekday for a given date, however, depending on the calendar a week can star on Monday and somwhere on Sunday

so i wanted to set it, to start

3条回答
  •  北海茫月
    2020-12-19 10:00

    A useful function to get corrected weekday number for different firstWeekday cases

    Swift 3.0

    func dayOfWeek(day: Int, month: Int, year: Int) -> Int {
        let calendar = Calendar.current
        let dateComponents = DateComponents(year: year, month: month, day: day)
    
        guard let date = calendar.date(from: dateComponents) else {
            fatalError("Can't create date form specified date components")
        }
    
        var weekday = calendar.component(.weekday, from: date)
    
        //handling the case when calendar starts from Monday: firstWeekday == 2
        if calendar.firstWeekday == 2 {
            weekday = (weekday == 1) ? 7 : (weekday - 1)
        }
    
        return weekday
    }
    

提交回复
热议问题