Try these properties :
let fmt = NSDateFormatter() fmt.weekdaySymbols // -> ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] fmt.shortWeekdaySymbols // -> ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] fmt.veryShortWeekdaySymbols // -> ["S", "M", "T", "W", "T", "F", "S"] fmt.standaloneWeekdaySymbols // -> ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] fmt.shortStandaloneWeekdaySymbols // -> ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] fmt.veryShortStandaloneWeekdaySymbols // -> ["S", "M", "T", "W", "T", "F", "S"]
It seems they always return a Sun ... Sat array regardless of the .firstWeekday property. Therefore, you must rotate it manually.
let firstWeekday = 2 // -> Monday var symbols = fmt.shortWeekdaySymbols symbols = Array(symbols[firstWeekday-1..<symbols.count]) + symbols[0..<firstWeekday-1] // -> ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]