当前位置: 首页 > article >正文

Java 8+ 时间类型 :从 LocalDateTime 到 Instant

一、核心前置知识1. 核心包所有新时间类型都位于java.time包下无需引入第三方依赖JDK 8 原生支持。2. 核心设计理念领域驱动设计将「日期、时间、时区、时间戳、时间间隔」严格拆分每个类型只负责一件事无歧义、无冗余。所有核心类都是✅不可变类修改时间会生成新对象线程安全✅语义清晰见名知意没有冗余方法✅时区安全区分「本地时间」和「全球时间」二、Java 8 常用时间类型全解我们按照业务场景将核心类型分为 4 大类逐一详解第一类无时区本地时间纯本地展示这类类型不包含任何时区信息仅表示「人类视角的本地日期 / 时间」比如生日、日程、本地闹钟不适合存储全球统一时间。表格类型含义格式示例核心特点LocalDate仅日期年月日2025-12-25无时间、无时区LocalTime仅时间时分秒纳秒20:30:59.999无日期、无时区LocalDateTime日期 时间2025-12-25T20:30:59无时区最常用本地类型import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; public class LocalTimeDemo { public static void main(String[] args) { // 1. 获取当前时间 LocalDate today LocalDate.now(); LocalTime nowTime LocalTime.now(); LocalDateTime now LocalDateTime.now(); // 2. 手动创建时间 LocalDate birthDay LocalDate.of(2000, 1, 1); LocalDateTime meeting LocalDateTime.of(2025, 12, 25, 14, 30); // 3. 常用操作加减时间不可变返回新对象 LocalDate nextWeek today.plusWeeks(1); LocalDateTime beforeHour now.minusHours(1); System.out.println(当前日期 today); System.out.println(会议时间 meeting); } }适用场景生日、纪念日、本地日程前端展示的纯本地时间与时区无关的业务场景第二类带时区 / 偏移量时间全球业务专用这类类型包含时区信息解决了「跨时区时间歧义」问题是跨境业务、分布式系统的首选。类型含义核心区别适用场景OffsetDateTime日期 时间 时区偏移量仅记录08:00这类偏移量轻量数据库存储、接口传输ZonedDateTime日期 时间 完整时区记录Asia/Shanghai支持夏令时时区转换、复杂时区业务关键区分OffsetDateTime固定偏移量无夏令时变化数据库官方推荐ZonedDateTime完整时区规则自动处理夏令时适合复杂时区计算import java.time.OffsetDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; public class ZoneTimeDemo { public static void main(String[] args) { // 1. 当前带偏移量的时间 OffsetDateTime offsetNow OffsetDateTime.now(); // 2. 指定时区创建时间 ZonedDateTime shanghaiTime ZonedDateTime.now(ZoneId.of(Asia/Shanghai)); ZonedDateTime newYorkTime ZonedDateTime.now(ZoneId.of(America/New_York)); System.out.println(上海时间 shanghaiTime); System.out.println(纽约时间 newYorkTime); } }适用场景跨境电商、海外业务分布式系统的时间统一需要明确时区的业务逻辑第三类机器时间戳Instant是 Java 新时间 API 中最重要的类型专为计算机存储、计算设计。核心特性表示UTC 时区的时间戳从 1970-01-01 00:00:00 开始的秒 / 纳秒无任何时区歧义全球唯一不可变、线程安全、性能极高import java.time.Instant; public class InstantDemo { public static void main(String[] args) { // 1. 获取当前时间戳 Instant now Instant.now(); // 2. 时间戳转秒/毫秒兼容旧系统 long second now.getEpochSecond(); long milli now.toEpochMilli(); // 3. 手动创建 Instant instant Instant.ofEpochMilli(System.currentTimeMillis()); System.out.println(当前UTC时间 now); System.out.println(时间戳毫秒 milli); } }适用场景✅数据库存储时间的最佳选择✅ 日志时间、分布式锁超时、消息队列时间戳✅ 所有需要「全球统一、无歧义」的时间场景第四类时间间隔计算时间差专用专门用于计算两个时间的差值严格拆分「日期间隔」和「时间间隔」类型含义计算单位Period日期间隔年、月、日Duration时间间隔时、分、秒、纳秒import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.Period; public class TimeGapDemo { public static void main(String[] args) { // 1. 计算日期间隔生日天数 LocalDate today LocalDate.now(); LocalDate birthDay LocalDate.of(2000, 1, 1); Period period Period.between(birthDay, today); System.out.println(年龄 period.getYears() 岁); // 2. 计算时间间隔会议时长 LocalDateTime start LocalDateTime.of(2025, 12, 25, 14, 0); LocalDateTime end LocalDateTime.of(2025, 12, 25, 16, 30); Duration duration Duration.between(start, end); System.out.println(会议时长 duration.toHours() 小时); } }三、高频实用操作格式化与转换1. 时间格式化 / 解析线程安全替代线程不安全的SimpleDateFormat使用DateTimeFormatterjava运行import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class FormatDemo { public static void main(String[] args) { // 定义格式化器 DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss); LocalDateTime now LocalDateTime.now(); // 时间 → 字符串 String formatTime now.format(formatter); // 字符串 → 时间 LocalDateTime parseTime LocalDateTime.parse(2025-12-25 14:30:00, formatter); System.out.println(格式化后 formatTime); } }2. 核心类型转换// LocalDateTime → Instant带时区 LocalDateTime local LocalDateTime.now(); Instant instant local.atZone(ZoneId.systemDefault()).toInstant(); // Instant → LocalDateTime LocalDateTime localTime LocalDateTime.ofInstant(instant, ZoneId.systemDefault());四、开发避坑指南禁止用 LocalDateTime 存储全球时间无时区跨时区会出现时间错乱存储必须用Instant/OffsetDateTime。禁止使用 SimpleDateFormat线程不安全高并发下会出现格式化错误统一用DateTimeFormatter。Instant 是 UTC 时间直接打印会比北京时间晚 8 小时属于正常现象转换为本地时间即可。所有新时间类都是不可变的调用plus/minus方法必须接收返回值原对象不会改变。五、企业级最佳实践业务场景推荐类型理由数据库存储时间Instant/OffsetDateTime无歧义、跨时区兼容本地展示生日 / 日程LocalDateTime无时区语义清晰跨境 / 时区业务ZonedDateTime支持完整时区规则时间戳 / 日志 / 超时Instant机器时间性能最优计算日期差Period年月日间隔计算时间差Duration时分秒间隔六、总结Java 8java.time包的时间 API 是现代 Java 开发的标准工具彻底告别了传统时间类的痛点分工明确日期、时间、时区、时间戳各司其职线程安全所有类不可变高并发无压力无歧义解决了跨时区、时间格式化的所有坑易用性强API 语义清晰一行代码完成时间操作。核心存储用 Instant展示用 LocalDateTime时区用 ZonedDateTime计算用 Duration/Period。

相关文章:

Java 8+ 时间类型 :从 LocalDateTime 到 Instant

一、核心前置知识 1. 核心包 所有新时间类型都位于 java.time 包下,无需引入第三方依赖,JDK 8 原生支持。 2. 核心设计理念 领域驱动设计:将「日期、时间、时区、时间戳、时间间隔」严格拆分,每个类型只负责一件事&#xff0c…...

有哪些降重软件能保住论文原意,不会改得逻辑不通?

论文降重最怕啥?改完重复率达标了,核心意思却跑偏,逻辑漏洞百出,专业术语乱改一通,导师一看就知道是 AI 瞎改的。其实选对工具,既能把重复率压到合格线,又能100% 保住论文原意、逻辑连贯、术语精…...

Arm Neoverse V2处理器勘误分类与规避方案详解

## 1. Neoverse V2处理器勘误深度解析作为Arm最新一代基础设施级处理器核心,Neoverse V2(代号MP158)在数据中心和边缘计算领域展现出强劲性能。但在实际部署中,硬件设计层面的勘误(Errata)可能引发系统性风…...

【汽车芯片功能安全分析与故障注入实践 03】从 Base FIT Rate 开始:为什么安全分析要先做 BFR?

作者: Darren H. Chen 方向: 汽车芯片功能安全分析与故障注入实践 Demo: D03_base_fit_rate 标签: 汽车芯片 功能安全 FIT BFR 随机硬件故障 可靠性建模Demo 说明 D03_base_fit_rate 用来实现一个简化的 Base FIT Rate 计算 Demo。…...

为OpenClaw构建基于时间线的知识图谱大脑:Graphiti插件实战指南

1. 项目概述:为OpenClaw构建一个基于时间线的知识大脑 如果你和我一样,长期使用OpenClaw这类AI助手进行项目协作、知识整理和深度对话,你可能会遇到一个核心痛点:对话是线性的、易逝的。一次长达数小时的头脑风暴,一旦…...

从iPhone备份提取Apple Watch健康数据的开源工具WatchClaw详解

1. 项目概述:一个能“抓取”Apple Watch数据的开源利器如果你是一名iOS或watchOS开发者,或者对可穿戴设备的数据分析感兴趣,那你很可能遇到过这样的困境:想深入研究Apple Watch采集到的那些丰富数据——心率、步数、活动能量、睡眠…...

三星全线退出中国家电市场:真被国货打跑?还是战略大转移?

一、三星真的被国货「打跑」了?近期三星官宣全线停止在中国大陆销售电视、冰箱、洗衣机等全品类家电,消息一出立刻引发热议。不少人高呼「解气」,认为这是国产家电崛起的标志性事件 —— 外资巨头终于被中国品牌打跑了。但事实真的是「兵败撤…...

de4dot:免费开源的.NET反混淆神器,轻松解密被保护的代码

de4dot:免费开源的.NET反混淆神器,轻松解密被保护的代码 【免费下载链接】de4dot .NET deobfuscator and unpacker. 项目地址: https://gitcode.com/gh_mirrors/de/de4dot 你是否曾经遇到过这样的情况:拿到一个.NET程序集,…...

开源像素光标主题制作指南:从sheep-realms-avatar到全平台个性化方案

1. 项目概述与核心价值如果你和我一样,是个对桌面美学有点“偏执”的创作者或玩家,那你肯定也折腾过鼠标指针。默认的白色箭头看久了实在乏味,而网上那些炫酷的指针包,要么风格不搭,要么安装复杂,要么就是版…...

全卷积扩散模型FCDM:高效图像生成新方案

1. 项目概述 在计算机视觉领域,卷积神经网络(ConvNets)曾长期占据主导地位。然而近年来,Transformer架构在生成模型中的应用逐渐增多,但其高计算复杂度和资源消耗问题也日益凸显。本文介绍了一种基于ConvNeXt架构改进的…...

形式化方法

形式化方法是基于数学、逻辑、符号化语言,对软件系统进行合格建模、规范描述、逻辑推理和正确验证的一套开发与分析方法。不依靠人工测试猜测bug,而是用数学方式证明程序和系统是否正确。形式化方法的核心作用在于,它可以用严格的逻辑写清系统…...

NIQ研究揭示商业新规则:人工智能正开始决定消费者购买什么

NIQ最新的全球报告《商业革命:东西方交汇》探讨了商业智能如何帮助品牌、零售商和平台在快速融合的全球格局中把握方向 人工智能正迅速从一种工具转变为“买家”,从而重塑人们发现、选择和购买产品的方式 零售业的下一波增长浪潮并非源自传统电子商务&am…...

羊蹄山之魂

...

C++ 输入与输出的使用说明(最后含提高输入输出效率的三行代码)

一.标准输入输出流库及输入输出流对象及符号介绍< iostream > : input output stream的缩写&#xff0c;是标准的输入输出流库&#xff0c;定义了标准的输入输出流对象。 std::cin : istream类的对象&#xff0c;是 C 标准库中用于从标准输入&#xff08;键盘&#xff09…...

开源NotebookLM替代品SurfSense:自托管AI知识中枢部署与实战指南

1. 项目概述&#xff1a;为什么我们需要一个开源的 NotebookLM 替代品&#xff1f; 如果你和我一样&#xff0c;是个重度依赖 AI 来整理、分析和创作内容的人&#xff0c;那你肯定对 Google 的 NotebookLM 不陌生。它确实是个好工具&#xff0c;把文档丢进去&#xff0c;就能基…...

2026-05-09 全国各地响应最快的 BT Tracker 服务器(电信版)

数据来源&#xff1a;https://bt.me88.top 序号Tracker 服务器地域网络响应(毫秒)1udp://118.196.100.63:6969/announce上海电信32udp://60.172.236.18:6969/announce安徽合肥电信73http://60.249.37.20:6969/announce广东广州电信324http://211.75.205.187:6969/announce广东…...

AI应用生产级部署模板:从FastAPI到Celery的工程化实践

1. 项目概述&#xff1a;从开源模板到AI应用的生产力革命最近在GitHub上看到一个挺有意思的项目&#xff0c;叫Sargentech-AI/openclaw-production-templates。光看名字&#xff0c;你可能会觉得这又是一个普通的代码模板库&#xff0c;但如果你深入了解一下&#xff0c;就会发…...

2026年05月08日最热门的开源项目(Github)

本期榜单中列出了15个不同的项目&#xff0c;每个项目都有其独特的特点和用途。以下是对榜单的分析&#xff1a; 1. 高热度项目 anthropics/financial-services (Star: 14182) 是榜单中当前Star数最多的项目&#xff0c;介绍虽不详&#xff0c;但显然在金融服务领域应用广泛。…...

开源AI助手技能开发:从角色扮演到人格化交互的技术实现

1. 项目概述&#xff1a;一个为开源AI助手打造的“维京女友”技能最近在折腾开源AI助手生态&#xff0c;发现了一个特别有意思的项目&#xff0c;叫“Viking_Girlfriend_Skill_for_OpenClaw”。光看名字就充满了反差感和极客式的幽默感。这本质上是一个为OpenClaw这类开源AI助手…...

GNSS授时与PPS技术

一、 核心原理与基础概念 1.1 授时原理概述 GNSS授时的根本原理&#xff0c;是接收机利用卫星信号解算出自身与卫星的钟差后&#xff0c;校正本地时钟&#xff0c;使其与卫星上的高精度原子钟同步。当接收机能同时观测到至少4颗卫星信号时&#xff0c;便可完成这一过程&#…...

从零构建私有化智能语音助手:基于ESP32与开源后端的完整实践指南

1. 项目概述&#xff1a;从零构建你的智能语音助手后端如果你手头有一块ESP32开发板&#xff0c;并且已经体验过类似“小智”这样的智能语音助手项目&#xff0c;但总觉得依赖别人的云端服务不够自由、不够安全&#xff0c;或者想深度定制功能&#xff0c;那么今天这个内容就是…...

什么是RGM收入增长管理?RGM收入增长管理工具怎么选?

在当今竞争激烈且瞬息万变的快消品市场中&#xff0c;企业面临着诸多挑战&#xff0c;如消费者需求日益多样化、市场竞争不断加剧、渠道成本持续上升等。在这样的背景下&#xff0c;如何实现可持续的收入增长成为了快消企业亟待解决的关键问题。而RGM收入增长管理&#xff0c;正…...

555电影网:全网影视网,高清追剧的不二之选

在当下快节奏的生活里&#xff0c;很多人下班回家最放松的方式就是打开一部好剧&#xff0c;沉浸其中。面对海量影视资源&#xff0c;如何快速找到画质清晰、更新及时、观看流畅的平台&#xff0c;成为不少人的困扰。而555电影网正逐渐成为很多剧迷心中的首选。 作为一个聚合全…...

3步解锁Unity游戏无限可能:MelonLoader模组加载器深度解析

3步解锁Unity游戏无限可能&#xff1a;MelonLoader模组加载器深度解析 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否曾…...

大气环境科研必备利器:WRF-Chem在区域污染传输与生态沉降评估中的实践全揭秘

随着我国经济快速发展&#xff0c;我国面临着日益严重的大气污染问题。近年来&#xff0c;严重的大气污染问题已经明显影响国计民生&#xff0c;引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果&#xff0c;同时气象因…...

深入浅出 Java 反射机制,了解动态编程的原理,小白的速通指南

一、反射是什么&#xff1f;Reflection&#xff08;反射&#xff09; 是 Java 的一项强大特性&#xff0c;它允许运行中的程序获取自身或任意类的内部信息&#xff08;如成员变量、方法、构造器&#xff09;&#xff0c;并且可以动态创建对象、调用方法、修改字段&#xff0c;甚…...

模拟信号数字化中的混叠现象与抗混叠滤波器设计

1. 模拟信号数字化中的混叠现象解析 在工业测量和数据采集领域&#xff0c;我们经常需要将现实世界中的连续模拟信号转换为离散的数字信号进行处理。这个看似简单的过程却隐藏着一个关键陷阱——混叠&#xff08;Aliasing&#xff09;。就像老式西部片中马车轮子看似倒转的视觉…...

使用Taotoken CLI工具一键配置多开发环境与团队协作密钥

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken CLI工具一键配置多开发环境与团队协作密钥 在团队协作开发中&#xff0c;为新成员配置大模型API环境常常是个繁琐的过…...

AI辅助开发实战:从视觉前端到金融后端的半自动系统构建

1. 项目概述&#xff1a;一个AI深度参与的半自动系统开发实践 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Semi-automatic-artificial-intelligence-system”&#xff0c;作者是heyaaron-Wu。这个项目本质上是一个实验场&#xff0c;用来探索AI在复杂系统开发中的辅…...

Arm Neoverse V2处理器异常机制与优化实践

1. Arm Neoverse V2处理器异常机制深度解析Arm Neoverse V2作为新一代基础设施级处理器&#xff0c;其微架构设计在追求极致性能的同时&#xff0c;也面临着复杂指令流水线与内存子系统带来的挑战。在实际开发中&#xff0c;工程师常会遇到几类典型异常场景&#xff1a;分支预测…...