如何解决java 8 新日期/时间 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 中没有相应的表示,但对于此类情况很方便。
您可能已经知道,LocalDate
是没有时间的日期。由于您要求一年的第一天,我认为这门课适合您。对于旧类,我们也将被迫决定一天中的某个时间。使用 java.time 我们不是。如果您确实需要一天中的某个时间,您可能希望转换为 ZonedDateTime
(OffsetDateTime
、Instant
和 LocalDateTime
是其他选项,具体取决于您的具体要求)。
您需要选择一个时区,因为新年不会在所有时区同时发生。在极端情况下,如果您使用不正确的时区,您的结果将是整整一年。我假设 JVM 的默认时区没问题。使用时区 ID 可能更安全,例如 ZoneId.of("Asia/Ho_Chi_Minh")
。
有多种方法可以做到这一点,我会从 LocalDateTime
和当前年份开始,然后是第一个月的第一天。喜欢,
LocalDateTime first = LocalDateTime.of(LocalDate.now().getYear(),1,0);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。