5

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

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)
4

1 回答 1

5

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

减去 500 毫秒意味着您只需跨过中点。如果您添加 500 毫秒,也会发生同样的情况,这应该会让您超过第二个。实际上减去 500 毫秒是可行的,你必须加上 620 毫秒才能看到下一秒。

于 2013-09-22T17:12:38.257 回答