Java 日期没有被比较?
我在android应用程序中比较日期,但对于相同的日期,Java 日期没有被比较?,java,android,date,datetime,android-date,Java,Android,Date,Datetime,Android Date,我在android应用程序中比较日期,但对于相同的日期,compareTo或equals方法返回日期不相等的结果。我已经调试完毕,可以看到我的两个对象都有相同的值。但也有人认为它不起作用。以下是我的做法: public static boolean compareDates(long deliveryTime, Date date) throws ParseException { Date deliveryDate = convertLongToDate(deliveryTime);
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;
}
我的
日期
对象不包含时间
,因此我将交付时间的
时间也设置为0(零)
,以便两个对象可以具有相同的值。但它不起作用。感谢您的帮助。谢谢 将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()
我将在
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());
}
如果将
日期
和交付日期
设置为日期对象
,则可以使用
date.compareTo(deliveryDate);
这将返回:0
如果日期相同,如果日期比deliveryDate
最近,则值大于0,如果日期在deliveryDate
之前,则值小于0
要将日期转换为日期格式,可以使用以下方法:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(date);
Date deliveryDate = sdf.parse(deliveryTime);
您可以发布
convertLongToDate
方法吗?equals()
在这里不合适,请从两个日期中提取Year
和Day
并将两者进行比较。顺便说一句,日期现在已被长期弃用,日历是推荐的替代方法。打印出两个日期的getTime()
值。我猜它们是不同的。我试过了,但我得到了毫秒的差异,然而当我看到日期对象中的值时,它们是相同的。怎么可能?不可能。您一定错过了日期中指定的毫秒数。如果你不关心毫秒,你也需要把它们去掉。您通常会为此使用Calendar类。我将用另一种方法更新我的答案。它对我起了作用。但在我的案例中,我必须比较月份、日期和年份。然而,你为我指明了正确的方向。谢谢