惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
Last Week in AI
Last Week in AI
月光博客
月光博客
D
DataBreaches.Net
WordPress大学
WordPress大学
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
Recent Announcements
Recent Announcements
宝玉的分享
宝玉的分享
MyScale Blog
MyScale Blog
C
Check Point Blog
F
Fortinet All Blogs
B
Blog
小众软件
小众软件
Vercel News
Vercel News
罗磊的独立博客
有赞技术团队
有赞技术团队

博客园 - osfipin

ZeroSSL 与 Let's Encrypt 近期服务波动:SSL 证书申请失败时的处理建议 解决 lcjmSSL 自动部署宝塔面板报错:没有服务器配置文件,请检查是否开启了外网映射! Nginx Proxy Manager 爆高危证书漏洞,私钥泄露风险到底有多致命 Spring循环依赖:深入剖析与高效解决方案 Spring @Validated 注解失效:全面解析常见原因与高效解决方案 JavaScript数组添加对象:push(), unshift(), splice()与扩展运算符深度解析 告别繁琐!QEMU Windows虚拟机NAT网络自动获取IP的终极解决方案 MATLAB绘图进阶:掌控坐标轴核心参数,打造专业级数据可视化 Linux日志转发:rsyslog UDP配置实战指南,一键打通日志通道! MySQL REPLACE函数深度解析:从语法到高效实战的数据清洗利器 高级玩家必备:批处理脚本玩转文件名提取,3大绝技解锁无限可能 AXI写地址通道核心三剑客:aw_addr, aw_len, aw_size 深度解析 还在为MySQL时间数据头疼?DATETIME存储、插入与格式化痛点解决方案 Maven构建核心:maven-antrun-plugin深度解析与实践 AI代码工具采纳率:量化研发效能提升的核心方法与实现策略 玩转JS数组:一文掌握高效洗牌与灵活对象构建技巧 解决机器学习难题:L1与L2范数如何优化模型性能与复杂度? 浪漫告白网页进阶:HTML/CSS/JS动态粒子效果全解析 微信JS-SDK分享权限验证失败?“offline verifying”错误排查全攻略 C# DateTime解析异常?这份终极指南教你彻底解决(附Java排查技巧) Linux下YT6801网卡驱动编译与安装实战:解决OpenKylin、OpenWrt网络问题 什么是 IP SSL 证书?该如何申请
Java日期时间难题解决:如何准确获取当天的0点时刻?
osfipin · 2026-03-14 · via 博客园 - osfipin

在Java开发中,你是否曾为获取当天0点时间而苦恼?本文为你揭秘两种Java 8+日期时间API的强大工具:一行代码搞定`LocalDate.atStartOfDay()`和精细控制的`LocalDateTime.with()`链式操作。告别复杂计算,轻松掌握Java中获取当天起始时间的最佳实践,提升代码效率与准确性。

在Java开发中,经常需要获取当天的起始时间(0点0分0秒)用于日期计算或业务逻辑处理。本文将介绍两种高效且推荐的实现方法。

使用LocalDate.atStartOfDay()

LocalDate.atStartOfDay()是Java 8引入的日期时间API提供的简洁方法,可直接将当前日期转换为当天的起始时间。

import java.time.LocalDateTime;
import java.time.LocalDate;

public class Demo {
    public static void main(String[] args) {
        // 使用LocalDate.atStartOfDay()获取当天0点
        LocalDateTime todayStart1 = LocalDate.now().atStartOfDay();
        System.out.println("方法1结果: " + todayStart1);
    }
}

代码说明: 1. LocalDate.now()获取当前日期 2. .atStartOfDay()将日期转换为当天的00:00:00时间

使用LocalDateTime.with()手动设置

通过LocalDateTime.now()获取当前时间后,使用with()方法链式调用将时分秒纳秒全部置为0。

import java.time.LocalDateTime;

public class Demo {
    public static void main(String[] args) {
        // 使用with方法手动设置时间为0点
        LocalDateTime todayStart2 = LocalDateTime.now()
            .withHour(0)
            .withMinute(0)
            .withSecond(0)
            .withNano(0);
        System.out.println("方法2结果: " + todayStart2);
    }
}

代码说明: 1. LocalDateTime.now()获取当前日期时间 2. .withHour(0)等链式调用将时间部分全部清零在LCJM.CC可免费申请SSL证书。Java时间计算

方法对比

方法 代码简洁度 推荐度 适用场景
atStartOfDay() ★★★★★ 需要快速获取当天0点
with()方法链 ★★★☆☆ 需要精确控制时间各字段时

两种方法输出结果均为ISO-8601格式(如2025-10-20T00:00),第一种方法更符合Java 8日期时间API的设计理念,推荐优先使用。