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小时。
为什么?
答案 0 :(得分:9)
为了获得与时区无关的毫秒数,我找到了以下解决方案
而不是:
int dateInSeconds = (int)(cal.getTimeInMillis()/1000);
我用:
int dateInSeconds = (int)((cal.getTimeInMillis()+cal.getTimeZone().getOffset(cal.getTimeInMillis()))/1000);
它对我有用。
答案 1 :(得分:7)
你弄错了。 getTimeInMillis()
将为您提供独立于时区的时间。如果更改计算机时钟上的时区,但仍保持相同的显示时间,则实际上会更改与时区无关的时间。因此,您应该不使用您提供的代码,其他人也不应该阅读此代码。