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

时间:2012-10-26 08:17:26

标签: android calendar timezone gettime

Java: Timezone why different timezone give same value in millisec

引用上面的链接我认为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小时。

为什么?

2 个答案:

答案 0 :(得分:9)

为了获得与时区无关的毫秒数,我找到了以下解决方案

而不是:

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

我用:

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

它对我有用。

答案 1 :(得分:7)

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