【发布时间】:2021-12-06 15:11:50
【问题描述】:
我在使用 Swift 获取一个月中的总天数时遇到了一个小问题。 我扩展了 Date 类并创建了这个函数:
func daysInMonth() -> Int {
print(self.day) ##30
print(self.month) ##12
print(self) ## 2021-11-30 23:46:29 +0000
print(Calendar.current.range(of: .day, in: .month, for: self)?.count) ##31
return Calendar.current.range(of: .day, in: .month, for: self)?.count ?? 0
}
我已在我的 Mac 设置中的首选项中将日期和时间设置为 11 月 30 日晚上 11:45。 我在晚上 11:46 调用了上述函数并获得了上述结果(内联,在打印语句旁边)。 日期输出和日期一样正确。月份输出错误,结果为 11 月份的 31 天。 如果我在晚上 10:00 之前运行完全相同的代码,我会得到正确的结果,即 30 天。
有人知道为什么会这样吗?
谢谢,
辣椒粉
【问题讨论】:
-
时差?
-
即使我转换为本地时区,也会发生同样的事情。 @JoakimDanielson
-
self.month是如何计算的? -
self在这种情况下基本上是Date().month。所以应该是当前月份。 -
Swift
Date没有属性month。