UTC时区未检测到夏令时

时间:2014-06-20 10:27:21

标签: java date timezone dst

我有以下代码。

//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日的UST formnat,属于3月到10月之间的DST时间。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

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

  • TAI - 从精确的原子钟测量

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

  • UTC - 计算,将leap seconds添加到TAI,使其与UT1的0.9秒内对齐。

UTC是我们在计算中使用的通用标准。 UTC中的时间可以用各种格式表示,但每个人始终同一时间。它不受时区影响,从不更改daylight saving time

答案 1 :(得分:1)

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

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

因此,上述行只是告诉该时刻在该时区(UTC)是否对应于daylightTime。当然,它总会返回false,因为UTC(伪)时区没有DST。