Java 8 Java8无时间分区日期

Java 8 Java8无时间分区日期,java-8,Java 8,有没有办法表示与时区关联的日期(没有时间)?我能找到的唯一没有时间的日期表示形式是LocalDate,我想它不允许您指定区域。简而言之,Java-8中没有这种类型。 至少可以说,日历日期和时区的组合是值得怀疑的。原因是时区是按日期和时间运行的。由于时区负责在全局瞬间/时刻和本地时间戳(包括日期和时间)之间进行转换,因此仅使用日期和区域的组合无法实现此类转换 我所知道的唯一相似的类型是 xs:日期 在XML模式中,显式允许额外的偏移量(小于时区,因为它不存储夏令时规则或历史偏移量)。在我看来,W3

有没有办法表示与时区关联的日期(没有时间)?我能找到的唯一没有时间的日期表示形式是LocalDate,我想它不允许您指定区域。

简而言之,Java-8中没有这种类型。

至少可以说,日历日期和时区的组合是值得怀疑的。原因是时区是按日期和时间运行的。由于时区负责在全局瞬间/时刻和本地时间戳(包括日期和时间)之间进行转换,因此仅使用日期和区域的组合无法实现此类转换

我所知道的唯一相似的类型是

xs:日期

在XML模式中,显式允许额外的偏移量(小于时区,因为它不存储夏令时规则或历史偏移量)。在我看来,W3C联盟引入这种类型是因为对称性,而不是实时任务。JSR-310(将java.time-package引入java-8)最初打算提供一种类似的类型,称为
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