我将瞬间转换为 LocalDate ,这是我的实现:
theInstant.atZone(ZoneId.systemDefault()).toLocalDate();
但是,我在 Junit 测试中遇到了异常: java.time.DateTimeException: Invalid value for Year (valid values -999999999 - 999999999): -1000000000
任何人都可以帮忙吗?
谢谢!
我将瞬间转换为 LocalDate ,这是我的实现:
theInstant.atZone(ZoneId.systemDefault()).toLocalDate();
但是,我在 Junit 测试中遇到了异常: java.time.DateTimeException: Invalid value for Year (valid values -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
就这样!