我无法弄清楚调试视图中的以下代码发生了什么:
public void addTime(int day, long offsetMillis) {
long currentTime = mCalendar.getTimeInMillis();
long newTime = currentTime + offsetMillis;
Date offsetDate = new Date(offsetMillis);
Date currentDate = new Date(currentTime);
Date newDate = new Date(newTime);
// ...
}
我有需要添加到当前时间的时间(以毫秒为单位)。查看调试状态,我可以看到 offsetDate 转换为 23:46,这是我想要添加的正确时间量。
currentDate 是当前时间,即给定日期 00:00 的开始。
newDate 是当前时间加上偏移量,即 13:46。
这是不正确的,看起来 GMT 是这里的区别,但正如您所看到的,GMT 在调试视图中都是 +10。所以我一生都无法弄清楚Java在做什么......请帮我解决这个问题?给定时间(以毫秒为单位),如何将其添加到给定日期?
所有的计算都是正确的。您指定的毫秒数实际上等于 13 小时 46 分钟。offsetDate 只显示 23:46,因为时区设置为 GMT+10。
Unix 时间戳通过计算自 1970 年 1 月 1 日 00:00 UTC 以来经过的毫秒数来工作。该日期相当于 1970 年 1 月 1 日 10:00 UTC+10。因此,为您的 offsetDate 显示的时间本身偏移了 10 小时。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句