Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日期没有被比较?_Java_Android_Date_Datetime_Android Date - Fatal编程技术网

Java 日期没有被比较?

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);

我在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;
}

我的
日期
对象不包含
时间
,因此我将
交付时间的
时间也设置为
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类。我将用另一种方法更新我的答案。它对我起了作用。但在我的案例中,我必须比较月份、日期和年份。然而,你为我指明了正确的方向。谢谢