☰
java 比较2个Date是不是同一天,越简单越好
2026/10/6 12:19:09 网站建设 项目流程

以下是几种简单的方法比较两个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版本,虽然创建了格式化对象,但代码最简短

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询