UTC时区不检测日光节约时间



我有以下代码:

//this line returns - UTC
TimeZone timeZone = TimeZone.getDefault();
//date1 - todays date in UTC format
boolean dstInit = timeZone.inDaylightTime(date1);
//date2 - todays date in UTC format
boolean dstNext = timeZone.inDaylightTime(date2); 

但是由于某些原因,dstInit和dstNext都返回false(而不是TRUE)。date1和date2是2014年6月20日,在美国夏令时3月到10月之间。有人能帮我解决这个问题吗?

UTC不是一种格式。这是一个计时系统。

  • TAI -由精密原子钟测量

  • UT1 -由地球的不精确旋转测量

  • UTC - 通过向TAI添加闰秒来计算,使其与UT1对齐在0.9秒内。

UTC是我们在计算中使用的通用标准。UTC中的时间可以用各种各样的格式表示,但是对于每个人来说总是相同的时间。它不受时区的影响,并且它永远不会更改夏令时

//date1 - todays date in UTC format
boolean dstInit = timeZone.inDaylightTime(date1);

如果date1是java Date对象,则注释是错误的。Java Date是一个对long的愚蠢包装,它只表示"物理"时间中的一个瞬间点,它不存储时区(也不是民用日期字段),并且它没有"格式"。

因此,上面的行只是告诉在那个时区 (UTC)中的那个瞬间是否对应于daylightTime。当然,它将始终返回false,因为UTC(伪)时区没有DST。

相关内容

  • 没有找到相关文章

最新更新