Swift - Weekday by current location by currentCalendar()
For the Gregorian calendar, the weekday
property of NSDateComponents
is always
1 for Sunday, 2 for Monday etc.
NSCalendar.currentCalendar().firstWeekday
gives the (index of the) first weekday in the current locale, that could be 1 in USA and 2 in Bulgaria. Therefore
var dayOfWeek = dateComps.weekday + 1 - calendar.firstWeekday
if dayOfWeek <= 0 {
dayOfWeek += 7
}
is the day of the week according to your locale. As a one-liner:
let dayOfWeek = (dateComps.weekday + 7 - calendar.firstWeekday) % 7 + 1
Update for Swift 3:
let calendar = Calendar.current
var dayOfWeek = calendar.component(.weekday, from: Date()) + 1 - calendar.firstWeekday
if dayOfWeek <= 0 {
dayOfWeek += 7
}