You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8 新Date/Time API如何获取一年的第一天?

Java 8 新Date/Time API获取一年第一天的实现方案

你给出的Java7 Calendar 写法中重复设置了多个日期属性,实际逻辑是取当前时区当年1月1日的零点零分零秒,Java8 新API可以更简洁实现同等效果:

核心依赖导入(全部在java.time包下)

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;

常用实现方式

  • 场景1:获取本地时区年首日期时间,完全匹配原Calendar默认逻辑
// 直接得到年首零点的LocalDateTime
LocalDateTime firstDayOfYear = LocalDate.now()
        .with(TemporalAdjusters.firstDayOfYear())
        .atStartOfDay();

// 如果需要兼容旧代码转成java.util.Date
Date dateResult = Date.from(firstDayOfYear.atZone(ZoneId.systemDefault()).toInstant());
  • 场景2:需要保留时区信息的场景
import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;

ZonedDateTime firstDayOfYear = ZonedDateTime.now(ZoneId.systemDefault())
        .with(TemporalAdjusters.firstDayOfYear())
        .truncatedTo(ChronoUnit.DAYS);

以上实现会自动将日期调整为当年1月1日,同时将时分秒毫秒全部置为0,和原Java7实现效果完全一致。

内容的提问来源于stack exchange,提问作者Tung Vo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 06:12:03