日历getTimeInMillis()是否与时区有关?

GVi*_*i82 6 timezone android calendar gettime

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

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

但是使用以下代码:

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

首先尝试将我的系统时钟设置为10:00和GMT + 02:00

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

输出数量比先前的情况大约7200,相当于约2小时.

为什么?

GVi*_*i82 9

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

代替:

 int dateInSeconds = (int)(cal.getTimeInMillis()/1000);
Run Code Online (Sandbox Code Playgroud)

我用:

 int dateInSeconds = (int)((cal.getTimeInMillis()+cal.getTimeZone().getOffset(cal.getTimeInMillis()))/1000);
Run Code Online (Sandbox Code Playgroud)

它对我有好处.


use*_*366 7

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