我遇到了 macOS Date() 的问题,这让我抓狂。
我只是想将 Date() 更改为同月同年的第一天。看似微不足道...
import Foundation
extension Date {
func firstOfMonth() -> Date {
let calendar = Calendar.current
return calendar.date(bySetting: .day , value: 1, of: self) ?? Date()
}
}
当我调用该函数时,它会给出下个月的第一天。
我已经尝试将日历设置为 UTC,以防万一,但仍然存在同样的问题
这是我在使用该功能时看到的
我假设这是我在这里遇到的某种精神障碍,或者只是接近衰老的迹象。任何指点都感激不尽。
那是因为日历设置。
您可以通过删除日期部分来获取当月的第一天,例如:
2023-09-30 20:30:00 +0000
它在我的日历设置中打印。因为当它位于我的时区时,它是 GMT 时区的正确时间2023-10-01
。2023-10-01
所以我可以通过传递如下日历来实现GMT
:现在它
⚠️重要提示!日历比看起来复杂得多,我不能保证上述解决方案或任何其他解决方案!您应该对此有良好的测试覆盖率。2023-10-01 00:00:00 +0000
按预期打印你可以尝试这样的事情,返回同月和同年的第一天。