news 2026/9/16 1:11:38

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/9/14 22:31:17

游戏开发:逻辑固定步长,渲染可变帧率

在游戏开发里,有一句听起来有点“专业味儿”的话: “逻辑用固定步长,渲染用可变帧率。” 这句话你肯定见过, 但很多人其实只停留在“我好像知道这是个好东西”的阶段, 真让他解释清楚:为啥要这么干?底层发生了啥?不用这套路会怎样? 就容易开始含糊其辞。 咱今天就用大…

作者头像 李华
网站建设 2026/9/14 19:29:28

深信服超融合 HCI 核心技术解析:aSV、aSAN 与 aNET 的协同架构

在数字化转型加速的今天,企业对 IT 基础设施的灵活性、可靠性和高性能提出了更高要求。传统服务器、存储、网络分离的架构,面临资源利用率低、运维复杂、扩展困难等痛点,已难以适配现代业务的快速迭代需求。深信服超融合基础设施(…

作者头像 李华
网站建设 2026/9/14 23:01:27

为什么推荐WAV格式?ASR识别效果实测对比

为什么推荐WAV格式?ASR识别效果实测对比 在语音识别(ASR)的实际应用中,我们常常会遇到一个看似简单却影响深远的问题:音频用什么格式最好? 是选择体积小的MP3,还是通用性强的M4A,亦…

作者头像 李华
网站建设 2026/9/15 4:19:10

开源语音情感识别新选择:Emotion2Vec+ Large落地应用趋势解析

开源语音情感识别新选择:Emotion2Vec Large落地应用趋势解析 1. Emotion2Vec Large语音情感识别系统二次开发实践 1.1 系统背景与核心价值 在智能客服、心理评估、教育反馈和内容审核等场景中,准确理解说话人的情绪状态正变得越来越重要。传统的语音情…

作者头像 李华
网站建设 2026/9/14 9:48:49

Qwen3-Embedding实战案例:电商评论情感分析系统搭建指南

Qwen3-Embedding实战案例:电商评论情感分析系统搭建指南 在电商平台中,每天都会产生海量的用户评论。如何快速理解这些文本背后的情绪倾向——是满意、失望还是愤怒?传统人工阅读效率低、成本高,而基于规则的情感分析又难以应对语…

作者头像 李华
网站建设 2026/9/15 3:48:07

YOLO11镜像使用指南:免配置环境快速启动训练

YOLO11镜像使用指南:免配置环境快速启动训练 YOLO11 是目标检测领域的新一代算法演进成果,延续了YOLO系列“又快又准”的核心优势。相比前代版本,它在模型结构、特征提取能力和推理效率上进行了多项优化,能够更高效地识别图像中的…

作者头像 李华