【问题标题】:Calendar getTimeInMillis() is timezone-dependent?日历 getTimeInMillis() 与时区有关吗?
【发布时间】:2012-10-26 08:17:26
【问题描述】:

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 小时。

为什么?

【问题讨论】:

    标签: android calendar timezone gettime


    【解决方案1】:

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

    代替:

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

    我用:

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

    它对我很有用。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • Calendar getTimeInMillis() 结果取决于 Calendar.ZONE_OFFSET...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      相关资源
      最近更新 更多