【问题标题】:Swift - Weekday by current location by currentCalendar()Swift - 当前位置的工作日,currentCalendar()
【发布时间】:2015-01-25 00:12:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios swift calendar location weekday


    【解决方案1】:

    对于公历,NSDateComponentsweekday 属性始终为 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
    }
    

    【讨论】:

    • 为了给别人澄清这一点,我不相信calendar.firstWeekday是“第一个工作日的索引”。值 1 对应于星期日,2 对应于星期一,与 NSDateComponents 相同。如果我遗漏了什么,请纠正我。
    【解决方案2】:

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

    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
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多