有没有办法表示与时区相关联的日期(没有时间)?我能够找到的唯一没有时间的日期表示是LocalDate,我想不允许你指定区域。
答案 0 :(得分:14)
简短回答,Java-8中没有这种类型。
至少可以说,日历日期和时区的组合是有问题的。原因是时区旨在按日期和时间运作。由于时区负责在全局瞬间/时刻和本地时间戳(包括日期和时间)之间进行转换,因此仅仅日期和区域的组合并不完整,无法进行此类转换。
我所知道的唯一类似类型是
XML-Schema中的的xs:日期
,它明确允许额外的偏移量(小于时区,因为它不存储夏令时规则或历史偏移量)。在我看来,W3C联盟为了对称原因而不是为了实时任务而引入了这种类型。 JSR-310(将java.time-package引入Java-8)最初旨在提供类似OffsetDate
的类型,另请参阅this page。然而,当Java-8完成发布时,它是removed。
当然,你可以自己编写一个简单的类,它包含两个类型LocalDate
和ZoneId
的状态成员(但你的用例是什么???)。对于XML,我宁愿选择LocalDate
和ZonalOffset
。
答案 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