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( OffsetDateTime,Instant以及LocalDateTime其他选项,具体取决于您的具体要求)。
您需要选择一个时区,因为新年不会在所有时区同时发生。在极端情况下,如果您使用不正确的时区,您的结果将是整整一年。我假设 JVM 的默认时区没问题。使用时区 ID 可能更安全,例如ZoneId.of("Asia/Ho_Chi_Minh").