Swift - 当前位置by currentCalendar()的工作日

Bog*_*nov 9 location calendar weekday ios swift

今天是星期三,我有这个代码

let calendar:NSCalendar = NSCalendar.currentCalendar()
let dateComps:NSDateComponents = calendar.components(.CalendarUnitWeekday , fromDate: NSDate())
let dayOfWeek:Int = dateComps.weekday
Run Code Online (Sandbox Code Playgroud)

dayOfWeek是4,但今天是保加利亚一周的第3天.今天美国是一周的第四天吗?以及如何确定一周何时开始在不同的国家和地区?在我的iPhone上,语言环境和日历被设置为保加利亚语日历和语言环境,它知道星期一也在我的iMac上开始,但是当我执行代码时它写了4 ...

Mar*_*n R 26

对于公历,星期日的weekday财产NSDateComponents总是1,周一的2.

NSCalendar.currentCalendar().firstWeekday
Run Code Online (Sandbox Code Playgroud)

给出当前语言环境中第一个工作日的(索引),在美国可以是1,在保加利亚可以是2.因此

var dayOfWeek = dateComps.weekday + 1 - calendar.firstWeekday
if dayOfWeek <= 0 {
    dayOfWeek += 7
}
Run Code Online (Sandbox Code Playgroud)

是根据您所在地区的星期几.作为单线:

let dayOfWeek = (dateComps.weekday + 7 - calendar.firstWeekday) % 7 + 1
Run Code Online (Sandbox Code Playgroud)

Swift 3更新:

let calendar = Calendar.current
var dayOfWeek = calendar.component(.weekday, from: Date()) + 1 - calendar.firstWeekday
if dayOfWeek <= 0 {
    dayOfWeek += 7
}
Run Code Online (Sandbox Code Playgroud)