今天是星期三,我有这个代码
let calendar:NSCalendar = NSCalendar.currentCalendar()
let dateComps:NSDateComponents = calendar.components(.CalendarUnitWeekday , fromDate: NSDate())
let dayOfWeek:Int = dateComps.weekday
dayOfWeek 是 4,但今天是保加利亚一周的第三天。 在美国今天是一周的第四天吗?不同国家和地区如何确定一周的开始时间? 在我的 iPhone 上,区域设置和日历设置为保加利亚日历和区域设置,并且它知道在我的 iMac 上一周也是从星期一开始,但是当我执行代码时,它会向我写入 4...
对于公历,
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
}
如果您想知道周末是哪一天,您可以使用此扩展程序:
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
}
}