java8新日期/时间API获取一年中的第一天

使用 java 7 我们可以得到一年的第一天

    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();

如何在 java 8 new Date/Time API 中像这样获得一年的第一天?

回答

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

我刚才跑的时候输出:

2021-01-01

Year班没有旧日期-时间API在相应的表示,但是是非常方便的像这样的病例。

您可能已经知道,aLocalDate是没有时间的日期。既然你问了一年第一天,我认为这门课适合你。对于旧类,我们也将被迫决定一天中的某个时间。使用 java.time 我们不是。如果您确实需要一天中的某个时间,您可能希望转换为ZonedDateTime( OffsetDateTimeInstant以及LocalDateTime其他选项,具体取决于您的具体要求)。

您需要选择一个时区,因为新年不会在所有时区同时发生。在极端情况下,如果您使用不正确的时区,您的结果将是整整一年。我假设 JVM 的默认时区没问题。使用时区 ID 可能更安全,例如ZoneId.of("Asia/Ho_Chi_Minh").


以上是java8新日期/时间API获取一年中的第一天的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>