组件日期错误

xyt*_*tor 0 calendar date nsdatecomponents ios swift

所以这很有趣:

\n
po Calendar.default.date(from: DateComponents(year: 2022, month: 1, hour: 16, minute: 1, second: 1, weekday: 1, weekOfMonth: 1))\n\xe2\x96\xbf Optional<Date>\n  \xe2\x96\xbf some : 2021-12-26 23:01:01 +0000\n    - timeIntervalSinceReferenceDate : 662252461.0\n
Run Code Online (Sandbox Code Playgroud)\n

我预计是 2022 年 1 月 1 日,但我得到的是 2021 年 12 月 26 日?它为什么要这样做?难道我做错了什么?

\n

fla*_*ker 5

这是因为您提供的日期组件是矛盾的。您的工作日是第 1 日(可能是星期日或星期一,具体取决于您所在的区域设置),但 2022 年 1 月 1 日是星期六。

Calendar.default当我认为你的意思时你也用过Calendar.current?)

如果你去掉这个weekDay词,你会得到正确的答案:

Calendar.current.date(from: DateComponents(year: 2022, month: 1, hour: 16, minute: 1, second: 1, weekOfMonth: 1))

// "Jan 1, 2022 at 4:01 PM"
Run Code Online (Sandbox Code Playgroud)

您还可以删除该weekOfMonth术语,因为在指定实际日期时它是多余的。