一尘不染

Swift-工作日(按当前位置,由currentCalendar())

swift

今天是星期三,我有此代码

let calendar:NSCalendar = NSCalendar.currentCalendar()
let dateComps:NSDateComponents = calendar.components(.CalendarUnitWeekday , fromDate: NSDate())
let dayOfWeek:Int = dateComps.weekday

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


阅读 579

收藏
2020-07-07

共1个答案

一尘不染

对于阳历,weekday属性NSDateComponents始终为1(星期日),2(星期一)等。

NSCalendar.currentCalendar().firstWeekday

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

var dayOfWeek = dateComps.weekday + 1 - calendar.firstWeekday
if dayOfWeek <= 0 {
    dayOfWeek += 7
}

是您所在地区的星期几。作为单线:

let dayOfWeek = (dateComps.weekday + 7 - calendar.firstWeekday) % 7 + 1

Swift 3 更新

let calendar = Calendar.current
var dayOfWeek = calendar.component(.weekday, from: Date()) + 1 - calendar.firstWeekday
if dayOfWeek <= 0 {
    dayOfWeek += 7
}
2020-07-07