0

我将瞬间转换为 LocalDate ,这是我的实现:

theInstant.atZone(ZoneId.systemDefault()).toLocalDate();

但是,我在 Junit 测试中遇到了异常: java.time.DateTimeException: Invalid value for Year (valid values -999999999 - 999999999): -1000000000

任何人都可以帮忙吗?

谢谢!

4

2 回答 2

1

问题是,无论您提供什么瞬间,它都必须在纪元-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
            
于 2021-03-05T15:16:03.180 回答
0

一旦你有了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
     

就这样!

于 2021-03-05T15:22:27.643 回答