news 2026/4/18 14:32:58

java 比较2个Date是不是同一天,越简单越好

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java 比较2个Date是不是同一天,越简单越好

以下是几种简单的方法比较两个Date是否为同一天:

方法1:Java 8+ 使用 LocalDate(推荐)

import java.time.LocalDate; import java.time.ZoneId; import java.util.Date; public boolean isSameDay(Date date1, Date date2) { LocalDate localDate1 = date1.toInstant() .atZone(ZoneId.systemDefault()) .toLocalDate(); LocalDate localDate2 = date2.toInstant() .atZone(ZoneId.systemDefault()) .toLocalDate(); return localDate1.isEqual(localDate2); }

方法2:Java 8+ 简化版

import java.time.Instant; import java.time.LocalDate; import java.time.ZoneId; import java.util.Date; public boolean isSameDay(Date date1, Date date2) { return LocalDate.ofInstant(date1.toInstant(), ZoneId.systemDefault()) .equals(LocalDate.ofInstant(date2.toInstant(), ZoneId.systemDefault())); }

方法3:使用 Calendar(Java 7及之前)

import java.util.Calendar; import java.util.Date; public boolean isSameDay(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal1.setTime(date1); cal2.setTime(date2); return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) && cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH); }

方法4:使用 SimpleDateFormat(最简短)

import java.text.SimpleDateFormat; import java.util.Date; public boolean isSameDay(Date date1, Date date2) { SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd"); return fmt.format(date1).equals(fmt.format(date2)); }

方法5:一行代码版(Java 8+)

public boolean isSameDay(Date date1, Date date2) { return date1.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate() .equals(date2.toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate()); }

测试示例

public static void main(String[] args) { Date date1 = new Date(); // 当前时间 Date date2 = new Date(); // 当前时间 Date date3 = new Date(date1.getTime() + 24 * 60 * 60 * 1000); // 明天 System.out.println(isSameDay(date1, date2)); // true System.out.println(isSameDay(date1, date3)); // false }

推荐方案

  • Java 8及以上:使用方法1,代码清晰且性能好

  • Java 7及以下:使用方法3(Calendar)或方法4(SimpleDateFormat)

  • 追求极致简洁:使用方法4的SimpleDateFormat版本,虽然创建了格式化对象,但代码最简短

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:50:56

QuickRecorder:重新定义macOS录屏体验的智能工具

QuickRecorder:重新定义macOS录屏体验的智能工具 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode.com/GitHub_Trending…

作者头像 李华
网站建设 2026/4/18 8:51:00

LeetDown降级工具终极指南:A6/A7设备完美解决方案

LeetDown降级工具终极指南:A6/A7设备完美解决方案 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 还在为复杂的iOS设备降级而头疼吗?面对繁琐的命令行操作…

作者头像 李华
网站建设 2026/4/18 8:28:52

一键部署verl:5分钟搞定强化学习环境

一键部署verl:5分钟搞定强化学习环境 1. 为什么选择 verl? 你是不是也遇到过这样的问题:想用强化学习(RL)做 LLM 的后训练,但框架太复杂,配置动辄上百行,跑个 demo 都要半天&#…

作者头像 李华
网站建设 2026/4/18 10:07:26

统一数据访问平台设计方案 - DataHub

一、命名建议1. 整体平台命名DataHub Platform └── 符合Hub中心化的概念,强调这是数据的中枢平台2. 各数据中心API命名DataHub Global API (原UK) # 全球标准API DataHub China API (CN) # 中国区API DataHub India API (IN) # 印度区API3. 套壳平…

作者头像 李华
网站建设 2026/4/18 8:46:28

多说话人识别挑战:CAM++聚类应用扩展指南

多说话人识别挑战:CAM聚类应用扩展指南 1. 引言:为什么说话人识别越来越重要? 你有没有遇到过这样的场景:一段会议录音里有五六个人轮流发言,你想知道每个人说了什么,却分不清谁是谁?或者客服…

作者头像 李华
网站建设 2026/4/18 6:38:29

VibeThinker-1.5B教育科技案例:在线编程课AI助教系统

VibeThinker-1.5B教育科技案例:在线编程课AI助教系统 1. 小参数大能力:VibeThinker-1.5B为何适合教育场景? 你有没有遇到过这样的情况:学生在上在线编程课时,问题一个接一个,老师根本忙不过来&#xff1f…

作者头像 李华