Java8没有时间划分日期

时间:2015-08-26 13:10:29

标签: java-8

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

2 个答案:

答案 0 :(得分:14)

简短回答,Java-8中没有这种类型。

至少可以说,日历日期和时区的组合是有问题的。原因是时区旨在按日期和时间运作。由于时区负责在全局瞬间/时刻和本地时间戳(包括日期和时间)之间进行转换,因此仅仅日期和区域的组合并不完整,无法进行此类转换。

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

  

的xs:日期

XML-Schema中的

,它明确允许额外的偏移量(小于时区,因为它不存储夏令时规则或历史偏移量)。在我看来,W3C联盟为了对称原因而不是为了实时任务而引入了这种类型。 JSR-310(将java.time-package引入Java-8)最初旨在提供类似OffsetDate的类型,另请参阅this page。然而,当Java-8完成发布时,它是removed

当然,你可以自己编写一个简单的类,它包含两个类型LocalDateZoneId的状态成员(但你的用例是什么???)。对于XML,我宁愿选择LocalDateZonalOffset

答案 1 :(得分:5)

也许你可以使用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