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

时间:2014-11-26 15:32:40

标签: ios swift calendar location weekday

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

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

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

2 个答案:

答案 0 :(得分:23)

对于公历,weekday的{​​{1}}属性始终为。{1}} 1表示星期日,2表示星期一等。

NSDateComponents

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

NSCalendar.currentCalendar().firstWeekday

是根据您所在地区的星期几。作为一个单行:

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

更新 Swift 3:

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

答案 1 :(得分:0)

如果您想知道哪个周末可以使用此扩展程序:

extension Calendar {

    /// Return the weekSymbol index for the first week end day
    var firstWeekendDay: Int {
        let firstWeekDay = self.firstWeekday
        return (firstWeekDay - 2) >= 0 ? firstWeekDay - 2 : firstWeekDay - 2 + 7
    }

    /// Return the weekSymbol index for the second week end day
    var secondWeekendDay: Int {
        let firstWeekDay = self.firstWeekday
        return (firstWeekDay - 1) >= 0 ? firstWeekDay - 1 : firstWeekDay - 1 + 7
    }

}