有人能告诉我为什么服务器上的日期不能正确显示吗?我正在尝试将日期与“现在”进行比较,这样我就可以看到过去、今天和未来的情况。
func getDetails(for game: Game) -> String {
let now = Date.now
let gameDate = game.gameDate
if gameDate.compare(now) == .orderedAscending {
print(“past”)
return "past"
}
if gameDate.compare(now) == .orderedDescending {
print(“future”)
return "future"
}
if gameDate.compare(now) == .orderedSame {
print(“today”)
return "today"
}
return "none"
}
我的解码器是set decoder.dateDecodingStrategy = .iso8601所有的日期回来“过去”,这是iOS 15+感谢您的帮助提前.
1条答案
按热度按时间6jjcrrmo1#
没有理由对日期使用compare()函数,因为日期符合Comparable和Equatable协议,这意味着可以使用
>
、<
、=
、>=
和<=
直接比较它们。也就是说,我们不知道您的game.date值是多少。
我可以告诉你,Date对象以亚毫秒级的精度捕获日期和时间,你传入函数的任何日期都可能是在代码运行之前的几纳秒,因此是过去的。
考虑以下代码:
这段代码打印出“日期不相等”,因为
later
的日期比now
晚了一小部分秒,而1 * 2的乘法需要足够的时间。(On我的机器它说较晚的日期比
now
日期大8. 499622344970703 e-05,或者大约8. 4微秒。)取出两个语句之间的数学代码,有时你会得到它说的日期是相等的,而其他时候,它会说他们不相等。