有什么问题?我假设如果我从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)
答案 0 :(得分:5)
使用Calendar.set(year, month, day, hourOfDay, minute, second)
设置毫秒数。因此,Calendar实现将毫秒设置为“未知”,实际上将其视为给定秒内的中点。
减去500毫秒意味着你只是跨过中点。如果你添加500毫秒也会发生同样的情况,这应该会让你刚刚超过秒。实际上减去500ms是有效的,你必须加上620ms才能看到下一秒。