今天是星期三,我有这个代码
let calendar:NSCalendar = NSCalendar.currentCalendar()
let dateComps:NSDateComponents = calendar.components(.CalendarUnitWeekday , fromDate: NSDate())
let dayOfWeek:Int = dateComps.weekday
dayOfWeek是4,但今天是保加利亚的第3天。 今天美国是一周的第四天吗?以及如何确定一周何时开始在不同的国家和地区? 在我的iPhone上,区域设置和日历设置为保加利亚日历和区域设置,它知道星期一也在我的iMac上开始,但是当我执行代码时它写了4 ...
答案 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
}
}