我想有一个compareTo方法来忽略java.util.Date的时间部分。我想有很多方法可以解决这个问题。最简单的方法是什么?


当前回答

如果你只想比较两个日期的月、日和年,下面的代码适用于我:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
sdf.format(date1).equals(sdf.format(date2));

谢谢抢劫。

其他回答

恐怕没有一种方法可以比较两个日期,可以称之为“容易”或“简单”。

当比较两个精度降低的时间实例时(例如,只是比较日期),你必须考虑时区对比较的影响。

例如,如果date1指定发生在+2时区的事件,而date2指定发生在EST时区的事件,则必须注意正确理解比较的含义。

你的目的是要弄清楚这两件事是否发生在各自时区的同一日历日期?或者,您是否需要知道这两个日期是否属于特定时区(例如,UTC或您的本地TZ)中的相同日历日期。

一旦你弄清楚你想要比较的是什么,就只需要在适当的时区获得年-月-日三元组合并进行比较。

Joda时间可能使实际的比较操作看起来更简洁,但是比较的语义仍然需要您自己弄清楚。

使用http://mvnrepository.com/artifact/commons-lang/commons-lang

Date date1 = new Date();

Date date2 = new Date();

if (DateUtils.truncatedCompareTo(date1, date2, Calendar.DAY_OF_MONTH) == 0)
    // TRUE
else
    // FALSE

在Java 8中,你可以使用与Joda Time非常相似的LocalDate。

如果你只想比较两个日期的月、日和年,下面的代码适用于我:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
sdf.format(date1).equals(sdf.format(date2));

谢谢抢劫。

我不知道这是新的想法或其他,但我给你展示我所做的

SimpleDateFormat dtf = new SimpleDateFormat("dd/MM/yyyy");
Date td_date = new Date();
String first_date = dtf.format(td_date);    //First seted in String 
String second_date = "30/11/2020";          //Second date you can set hear in String

String result = (first_date.equals(second_date)) ? "Yes, Its Equals":"No, It is not Equals";
System.out.println(result);