如何解决将即时转换为 LocalDate 并得到 java.time.DateTimeException: Invalid value for Year
我将一个 Instant 转换为 LocalDate,这是我的实现:
theInstant.atZone(ZoneId.systemDefault()).toLocalDate();
但是,我在 Junit 测试中得到了异常: java.time.DateTimeException: 年的无效值(有效值 -999999999 - 999999999):-1000000000
有人可以帮忙吗?
谢谢!
解决方法
问题在于,无论您提供什么瞬间,它都必须在 -999999999 to 999999999
的范围内,其中 0
是纪元。您可以通过多种方式创建瞬间。一种是指定当前日期。
LocalDate ld = Instant.now().atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println(ld);
印刷品
2021-03-05
另一个是在某个时间单位给它一个值。这是一秒钟。
LocalDate ld = Instant.ofEpochSecond(1229998889L)
.atZone(ZoneId.systemDefault()).toLocalDate();
印刷品
2008-12-22
,
一旦您拥有 LocatDate
LocalDate localDate = LocalDate.now(); //local date
LocalDateTime localDateTime = localDate.atTime(10,45,56); //Add time information
ZoneId zoneId = ZoneId.of("Asia/Kolkata"); // Zone information you can present ZoneId.systemDefault() here
ZonedDateTime zdtAtAsia = localDateTime.atZone(zoneId); // add zone information
ZonedDateTime zdtAtET = zdtAtAsia
.withZoneSameInstant(ZoneId.of("America/New_York")); // Same time in ET timezone
仅此而已!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。