Swift – 由currentCalendar()当前位置的Weekday

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

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

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

对于公历, NSDateComponentsweekday属性在weekday总是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 } 
Interesting Posts