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

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版本,虽然创建了格式化对象,但代码最简短

http://www.cnnetsun.cn/news/722190.html

相关文章:

  • 游戏开发:逻辑固定步长,渲染可变帧率
  • 深信服超融合 HCI 核心技术解析:aSV、aSAN 与 aNET 的协同架构
  • 为什么推荐WAV格式?ASR识别效果实测对比
  • 开源语音情感识别新选择:Emotion2Vec+ Large落地应用趋势解析
  • Qwen3-Embedding实战案例:电商评论情感分析系统搭建指南
  • YOLO11镜像使用指南:免配置环境快速启动训练
  • Live Avatar跑不动?5×24GB显卡无法运行的底层原因揭秘
  • Z-Image-Turbo国际化支持:多语言界面切换实现路径
  • 并非所有人都适合做网络安全:一份行业核心能力适配自查指南
  • 35 岁程序员无惧被裁!掌握这门技能,轻松实现职场翻盘
  • HTML在毕业设计中的核心作用与实战重点梳理
  • 2026年AI图像处理趋势一文详解:开源模型+弹性算力部署指南
  • TurboDiffusion如何复现结果?随机种子管理详细教程
  • Z-Image-Turbo木质纹理还原:产品材质表现力评测教程
  • 程序员必学!大模型完全指南:从入门到高薪,建议立即收藏,AI大模型应用开发学习路线
  • 【开题答辩全过程】以 面向警务应用的问答系统的设计与实现为例,包含答辩的问题和答案
  • Qwen3-0.6B成本优化案例:按小时计费GPU节省50%开支
  • SGLang为何能减少重复计算?核心机制与部署调优指南
  • Qwen3-0.6B镜像部署问题全解:API调用失败常见原因排查
  • GPT-OSS开源价值分析:推动AI democratization
  • 手把手教学:如何让AI自动打开小红书搜美食
  • Hunyuan-MT-7B加载失败?依赖库冲突排查与修复教程
  • Qwen-Image-Edit-2511部署全流程:从下载到运行一步到位
  • 让数据开口说话,知识库重构企业5大核心
  • 为什么选择Paraformer-large?离线语音识别部署入门必看指南
  • TurboDiffusion生成不理想?SLA TopK调参优化实战教程
  • Qwen3-Embedding-0.6B实战案例:基于Jupyter的文本分类快速上手
  • SGLang编译器工作原理揭秘:前后端分离部署实战解析
  • Java Web 宠物领养系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 录音比对神器来了!CAM++系统实操全过程演示