代码之家  ›  专栏  ›  技术社区  ›  Mike Nathas

Swift:ISO 8601日期:周和年

  •  0
  • Mike Nathas  · 技术社区  · 6 年前

    我正在尝试使用swift获取给定日历周和日历年的第一天的日期。

    let calendar = Calendar(identifier: .gregorian)
    var dayComponent = DateComponents()
    dayComponent.weekOfYear = 7
    dayComponent.weekday = 1
    dayComponent.year = 2016
    var date = calendar.date(from: dayComponent as DateComponents)
    

    第一个问题是weekday=1将给出星期日而不是i so 8601(星期一),所以我假设nscalendar不兼容iso8601。但没问题,我可以用weekday=2。

    第二个问题是,上述代码将给出2016年2月7日而不是2016年2月15日。这里的问题是,iso 8601将第一周定义为第一个星期四,也不用于nscalendar。

    所以问题是,有没有办法让一周中的第一天与Swift兼容?

    我发现的所有示例都不会产生与ISO兼容的日期。 谢谢!

    1 回复  |  直到 6 年前
        1
  •  1
  •   rmaddy    6 年前

    let calendar = Calendar(identifier: .iso8601)
    let dayComponent = DateComponents(year: 2016, weekday: 2, weekOfYear: 7)
    let date = calendar.date(from: dayComponent)