java - 检查是否因夏令时而增加时间

标签 java datetime java-8 dst java-time

在我的应用程序中,我必须经常检查给定的时间是否为 ZonedDateTime 是由于 DST 造成的额外时间。考虑从夏令时冬令时的过渡

1) *date* 01:00:00+02:00  
2) *date* 02:00:00+02:00
3) *date* 02:00:00+01:00
4) *date* 03:00:00+01:00

我想编写最简单的函数 isExtraHour(ZonedDate time),对于 1,2,4 将返回 false,对于 3 情况将返回 true 当然是使用 Java8 Time API。

最佳答案

这就是我要使用的:

public boolean isExtraHour(final ZonedDateTime time) {
  return time.getZone().getRules().getValidOffsets(time.toLocalDateTime()).size() > 1;
}

请注意,它在整个重叠小时内返回 true,我认为这就是您需要的答案。

关于java - 检查是否因夏令时而增加时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31285377/

相关文章:

java - 如何使 Autowiring 注释工作?

Java 的表现就像我有指针一样。为什么?

java - 如何为 ListView 中的最后一项添加颜色 - Android?

python - 在 python 中转换带有时区的 ISO 8601 日期格式

sql - 将时间戳分钟设置为特定值

hadoop - 在 Apache Nutch 中爬行时出错

c++ - 将包装函数(如 C/C++.bt(二进制模板)的结构)转换为 Java 8

java - 将所有值映射到一个键

mysql - 转换 DD/MM/YYYY hh :ii date to YYYY/MM/DD hh:ii MYSQL 时出现问题

java - 在 Java8 中合并两个函数