Swift:ISO 8601 日期从星期到年份

标签 swift date nscalendar

我正在尝试使用 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 将给出星期日而不是 ISO 8601(星期一),所以我假设 NSCalendar 与 ISO 8601 不兼容。不过没问题,我可以使用 weekday = 2。

第二个问题是上面的代码将给出 7-Feb-2016 而不是 15-Feb-2016。这里的问题是 ISO 8601 将第一周定义为第一个星期四的那一周,NSCalendar 也没有使用它。

那么问题来了,有没有办法让一周的第一天 ISO 8601 与 swift 兼容?

我找到的所有示例都没有生成 ISO 兼容日期。 谢谢!

最佳答案

使用 ISO8601 日期组件时,请使用 ISO8601 日历。

以下代码为您提供 2016 年 2 月 15 日:

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

关于Swift:ISO 8601 日期从星期到年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51619628/

相关文章:

swift - 以 parent 为中心的 View 彼此下方

ios - Swift:在后台同步 CoreData 对象

ruby - 在 ruby​​ 模型中设置日期格式(sinatra/datamapper)

ios - 设置了RepeatInterval的UILocalNotification每周不触发NSWeekdayCalendarUnit

nsdate - Swift 3 - 查找两个日期之间的日历天数

arrays - 按下按钮滚动数组时,我的应用程序崩溃了

java.util.date() 始终显示 GMT 时间

python - 获取当年第一天/最后一天的日期对象

swift - 使用 NSDate 获取星期几

ios - 如何在不初始化 UIWebView 或 WKWebView 的情况下获取 WKWebView 的 UserAgent?