微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 我们不是。如果您确实需要一天中的某个时间,您可能希望转换为 ZonedDateTimeOffsetDateTimeInstantLocalDateTime 是其他选项,具体取决于您的具体要求)。

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

,

有多种方法可以做到这一点,我会从 LocalDateTime 和当前年份开始,然后是第一个月的第一天。喜欢,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。