gpt4 book ai didi

java - 减去 1ms 会导致意外行为

转载 作者:搜寻专家 更新时间:2023-10-31 20:03:16 25 4
gpt4 key购买 nike

怎么了?我假设如果我从 1980 年 1 月 1 日 0:0:0 减去 1 毫秒,那么我得到 1979。但是我必须为此减去大约 500+ 毫秒。请给我一个提示。

val cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
cal.set(1980, 0, 1, 0, 0, 0)
val date = new Date
date.setTime(cal.getTimeInMillis()) // <- 1980 Jan 01 0:0:0
date.setTime(cal.getTimeInMillis() - 1) // <- 1980 Jan 01 0:0:0 too !!!

已更新。

解决办法是

val cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
cal.setTimeInMillis(0)
cal.set(1980, 0, 1, 0, 0, 0)

最佳答案

Calendar.set(year, month, day, hourOfDay, minute, second) 没有设置毫秒。因此,日历实现将毫秒设置为“未知”,这实际上被视为给定秒内的中点。

减去 500 毫秒意味着您刚刚跨过中点。如果您添加 500 毫秒,也会发生同样的情况,这应该会让您刚好超过一秒。实际上减去 500 毫秒是有效的,您必须添加 620 毫秒才能看到下一秒。

关于java - 减去 1ms 会导致意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com