tl;博士
ZoneId.of( "America/Montreal" )
.getRules()
.isDaylightSavings(
Instant.now()
)
java.time
ZoneRules类为时区的所有历史和未来过渡建模 .
Instant是UTC中时间轴上的一个时刻 .
A ZonedDateTime是将 ZoneId 应用于 Instant 的结果 .
示例代码:
ZonedDateTime now = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) );
…
ZoneId z = now.getZone();
ZoneRules zoneRules = z.getRules();
Boolean isDst = zoneRules.isDaylightSavings( now.toInstant() );
注意在最后一行中我们如何通过简单调用toInstant从 ZonedDateTime 对象中提取 Instant 对象 .
关于java.time
要了解更多信息,请参阅Oracle Tutorial . 并搜索Stack Overflow以获取许多示例和解释 . 规格是JSR 310 .
您可以直接与数据库交换java.time对象 . 使用JDBC driver符合JDBC 4.2或更高版本 . 不需要字符串,不需要 java.sql.* 类 .
从哪里获取java.time类?
Java 9增加了一些小功能和修复 .
大多数java.time功能都在ThreeTen-Backport中反向移植到Java 6和7 .
更新版本的Android捆绑java.time类的实现 .
ThreeTen-Extra项目使用其他类扩展java.time . 该项目是未来可能添加到java.time的试验场 . 您可以在这里找到一些有用的类,例如Interval,YearWeek,YearQuarter和more .