Java 8 Java8无时间分区日期
有没有办法表示与时区关联的日期(没有时间)?我能找到的唯一没有时间的日期表示形式是LocalDate,我想它不允许您指定区域。简而言之,Java-8中没有这种类型。 至少可以说,日历日期和时区的组合是值得怀疑的。原因是时区是按日期和时间运行的。由于时区负责在全局瞬间/时刻和本地时间戳(包括日期和时间)之间进行转换,因此仅使用日期和区域的组合无法实现此类转换 我所知道的唯一相似的类型是 xs:日期 在XML模式中,显式允许额外的偏移量(小于时区,因为它不存储夏令时规则或历史偏移量)。在我看来,W3C联盟引入这种类型是因为对称性,而不是实时任务。JSR-310(将java.time-package引入java-8)最初打算提供一种类似的类型,称为Java 8 Java8无时间分区日期,java-8,Java 8,有没有办法表示与时区关联的日期(没有时间)?我能找到的唯一没有时间的日期表示形式是LocalDate,我想它不允许您指定区域。简而言之,Java-8中没有这种类型。 至少可以说,日历日期和时区的组合是值得怀疑的。原因是时区是按日期和时间运行的。由于时区负责在全局瞬间/时刻和本地时间戳(包括日期和时间)之间进行转换,因此仅使用日期和区域的组合无法实现此类转换 我所知道的唯一相似的类型是 xs:日期 在XML模式中,显式允许额外的偏移量(小于时区,因为它不存储夏令时规则或历史偏移量)。在我看来,W3
OffsetDate
,另请参见。然而,当Java-8完成发布时
当然,您可以自己编写一个简单的类,其中包含两个类型为
LocalDate
和ZoneId
的状态成员(但您的用例是什么??)。对于XML,我宁愿选择LocalDate
和ZonalOffset
也许您可以使用ZonedDateTime类:
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Europe/Paris"));
LocalDate localDate = zonedDateTime.toLocalDate(); // gets you the date without time
ZoneId zoneId = zonedDateTime.getZone(); // gets you the timezone
Java时代的作者Stephen Colebourne简要地讨论了中缺少
zoneDate
。