我正在比较我的android应用程序中的日期,如何为我的相等日期,compareTo
或equals
方法返回我日期不相等。我已经通过调试,我可以看到我的两个对象有相同的值。但在某种程度上,它并没有起作用。以下是我的做法:
public static boolean compareDates(long deliveryTime, Date date) throws ParseException {
Date deliveryDate = convertLongToDate(deliveryTime);
deliveryDate.setHours(0);
deliveryDate.setMinutes(0);
deliveryDate.setSeconds(0);
if (deliveryDate.equals(date))
{
return true;
}
return false;
}
我的date
对象不包含time
,所以我将deliverTime's
时间设置为0(zero)
,以便两个对象可以具有相同的值。但这行不通。任何帮助都是感激的。谢谢!
我会从deliveryTime
中创建一个Date
对象,然后比较小时、分钟和秒。代码如下:
public static boolean compareDates(long deliveryTime, Date date) {
Date d = new Date(deliveryTime);
return(d.getHours() == date.getHours() && d.getMinutes() == date.getMinutes() && d.getSeconds() == date.getSeconds());
}
将deliveryTime
与date.getTime()
进行比较而不是将deliveryTime
转换为日期会更容易吗?
编辑
既然你没有提到你想忽略毫秒,你可以这样做:
(deliveryTime / 1000) == (date.getTime() / 1000)
应该去掉毫秒数。另外,
Calendar c = Calendar.getInstance();
c.setTime(deliveryTime);
c.set(Calendar.MILLISECOND, 0);
//Clear out the other fields you don't care to compare
Date deliveryDate = c.getTime()
如果您将date
和deliverydate
设置为date objects
,那么您可以使用
date.compareTo(deliveryDate);
这将返回:如果日期相同,则返回0
;如果date比deliveryDate
最近,则返回大于0的值;如果date在deliveryDate
之前,则返回小于0的值。
要将日期输入date format
,可以使用如下命令:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(date);
Date deliveryDate = sdf.parse(deliveryTime);