Java8新的日期/时间api获取一年中的第一天

velaa5lx  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(375)

使用Java7,我们可以在

Calendar currentCal = Calendar.getInstance();
    currentCal.set(Calendar.DAY_OF_YEAR, 1);
    currentCal.set(Calendar.MONTH, 0);
    currentCal.set(Calendar.DAY_OF_MONTH, 1);
    currentCal.set(Calendar.HOUR_OF_DAY, 0);
    currentCal.set(Calendar.MINUTE, 0);
    currentCal.set(Calendar.SECOND, 0);
    currentCal.set(Calendar.MILLISECOND, 0);
    //currentCal.getTime();

如何在Java8新的日期/时间api中获得这样的一年的第一天?

7ivaypg9

7ivaypg91#

LocalDate firstDayOfThisYear = Year.now(ZoneId.systemDefault()).atDay(1);
    System.out.println(firstDayOfThisYear);

我刚才运行的输出:
2021-01-01
这个 Year 类在旧的日期时间api中没有相应的表示形式,但对于像这样的情况非常方便。
正如你可能已经知道的,一个 LocalDate 是一个没有时间的日期。既然你要求开学第一天,我就认为这门课适合你。在旧的课堂上,我们不得不决定一天中的时间。对于java.time,我们不是。如果您确实需要一天中的某个时间,您可能会希望转换为 ZonedDateTime ( OffsetDateTime , InstantLocalDateTime 其他选项取决于您的具体要求)。
你需要选择一个时区,因为新年并不是在所有时区都同时发生。在极端情况下,如果你使用了不正确的时区,你的结果将是一整年的假期。我假设jvm的默认时区是正常的。使用时区id可能更安全,例如 ZoneId.of("Asia/Ho_Chi_Minh") .

dfddblmv

dfddblmv2#

我想从以下几个方面入手 LocalDateTime 然后是当年,然后是第一个月的第一天。喜欢

LocalDateTime first = LocalDateTime.of(LocalDate.now().getYear(), 1, 1, 0, 0);

相关问题