7

Java:时区为什么不同的时区以毫秒为单位给出相同的值

参考上面的链接,我假设 Calendar 类的 getTimeInMillis() 返回独立于时区的毫秒数。

但使用以下代码:

 Calendar cal = Calendar.getInstance();
 int dateInSeconds = (int)(cal.getTimeInMillis()/1000);
 Log.i("TIME IN SECONDS: ",""+dateInSeconds);

起初,尝试将我的系统时钟设置为 10:00 和 GMT+02:00

产生一定的输出数。但是将系统时钟设置为 10:00 和 GMT+00:00

输出数量比前一种情况大约多 7200,相当于大约 2 小时。

为什么?

4

2 回答 2

10

为了获得独立于时区的毫秒数,我找到了以下解决方案

代替:

 int dateInSeconds = (int)(cal.getTimeInMillis()/1000);

我用:

 int dateInSeconds = (int)((cal.getTimeInMillis()+cal.getTimeZone().getOffset(cal.getTimeInMillis()))/1000);

它对我有用。

于 2012-10-29T16:42:18.800 回答
8

你弄错了。getTimeInMillis() 将为您提供独立于时区的时间。如果您更改计算机时钟上的时区,但仍保持相同的显示时间,您实际上更改了与时区无关的时间。因此,您不应该使用您提供的代码,也不应该让其他任何人阅读本文。

于 2013-12-25T11:53:11.200 回答