java - Date.compareTo(Date) 不起作用

标签 java android date compare

我正在编写一个应用程序场景,需要在两个日期之间进行匹配(如果相同或不同),并且我试图使用 Date.compareTo() 来实现。但它永远不会像 API 所说的相同日期返回 0。

我从Caledar.getTime()获取这些日期,但它从来没有

我检查了两个日期对象的打印,甚至它们返回了相同的字符串。

Sat Nov 15 14:17:41 GMT+05:30 2014, Sat Nov 15 14:17:41 GMT+05:30 2014

任何建议,如何检查日期对象是否相等。

最佳答案

我认为您忘记检查日期毫秒是否相同。

这是compareTo方法的源代码。

public int compareTo(Date anotherDate) {
    long thisTime = getMillisOf(this);
    long anotherTime = getMillisOf(anotherDate);
    return (thisTime<anotherTime ? -1 : (thisTime==anotherTime ? 0 : 1));
}

如您所见,此方法使用毫秒作为“时间步长”来比较两个日期。

<小时/>

旧 API 代码:

此代码检查两天是否相同。 (没有小时、分钟、秒和毫秒)

Date date1; //Your initial date
Date date2; //Your initial second date

//Remove hours, minutes, seconds and milliseconds by creating new "clean" Date objects
Date compare1 = new Date(date1.getYear(), date1.getMonth(), date1.getDay());
Date compare2 = new Date(date2.getYear(), date2.getMonth(), date2.getDay());

if(compare1.compareTo(compare2) == 0){

}

但我建议您不要使用 Date 来执行此任务。因为 getYear、getMonth 等方法已被弃用,所以我建议您查看较新的 API,例如 GregorianCalendarCalendar

<小时/>

新 API 代码

此代码检查两天是否相同,包括小时和分钟。但没有秒和毫秒。

Date date1;
Date date2;

Calendar compareCalendar1 = Calendar.getInstance();
Calendar compareCalendar2 = Calendar.getInstance();
compareCalendar1.setTime(date1);
compareCalendar2.setTime(date2);


//Set for both calendars the seconds and milliseconds to 0
compareCalendar1.set(Calendar.MILLISECOND, 0);
compareCalendar1.set(Calendar.SECOND, 0);

compareCalendar2.set(Calendar.MILLISECOND, 0);
compareCalendar2.set(Calendar.SECOND, 0);

if(compareCalendar1.compareTo(compareCalendar2) == 0){

}

关于java - Date.compareTo(Date) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26883454/

相关文章:

javascript - 我怎样才能获得这种格式的实际日期?

excel - = text() 公式仅在我按 Enter 键时有效

java - 复选框,应用程序崩溃,不知道为什么

java - 房间内可流动

android - 无法使用 Android Facebook SDK 4.3 登录 Facebook

java - 异步任务 : How to return a HashMap from doInBackground?

python - 将函数应用于已有的日期列

java 内存映射文件,以 4k 或 8k block 读/写 SSD?

java - 为什么这个简单的调度程序不起作用?

android - Android中的OkHttp Mutual SSL