如何比较日期数组值

时间:2014-01-29 11:32:04

标签: java arrays date time

我有日期数组存储日期和时间。它有2个值。两个都是一样的。

  

1月29日星期三00:18:48 GMT 2014

当我比较它们时

    date1[1]==date1[2]

它返回false。

完全令人困惑。当它们具有相同的值时,为什么会这样。

8 个答案:

答案 0 :(得分:2)

为了让您明白,如果它是Date数组,则应使用

比较Date对象
Date.compareTo(Date arg)

如果它是包含日期的String数组,则应使用

进行比较
String.equals(String arg)

==是用于检查相等性的条件测试运算符。这通过比较左右操作数中的实际值来进行相等性测试。因此,这应该仅用于测试原始值的相等性。因此,它说避免使用==来测试对象类型上的相等性

答案 1 :(得分:1)

要比较Date,您可以在before()中使用after() Java.util.Date方法。

同样Date也是Java对象,因此您也可以使用equals()

    Date date1=new Date();
    Date date2=new Date();

    if(date1.before(date2)){
        System.out.println("date1 before date2");
    } else if(date1.after(date2)){
        System.out.println("date1 after date2");
    } else if(date1.equals(date2)){
        System.out.println("date1 and date2 equals");
    }

答案 2 :(得分:1)

对象类型的比较如下:

object1.equals(object2)

只将原语(不是它们包装的对象类型)与“==”运算符进行比较。

但是,如果你想知道一个对象是完全相同的对象(内存中的相同地址,相同的引用),你应该使用“==”运算符。

答案 3 :(得分:1)

date1[1].equals(date1[2])

==检查引用是否相同。你需要等于,因为你想比较内容。

答案 4 :(得分:1)

对象使用equals方法

date1[1].equals(date1[2])

答案 5 :(得分:1)

使用日期的数值代替。它们更可靠,特别是涉及不同的日期子类时。

date[1].getTime()==date[2].getTime()

答案 6 :(得分:1)

如果没有看到整个代码,很难建议你,但我认为你必须使用方法equals()或类似的东西。当您对非基本类型使用operator ==时,您要比较引用,而不是值。

答案 7 :(得分:1)

运算符==比较对象的引用。例如:

public static void main(String[] args) {
    StringBuilder s = new StringBuilder();
    s.append("Hello");
    if(s.toString() == "Hello")
        System.out.println(s);
}

什么都不显示。您可以使用==来比较基元类型:

int i = 5;
if(i == 5)
    System.out.println(i);

这将显示5

如果要比较2个对象的内容,则必须使用equals()方法:

String s = "Hello";
if(s.equals("Hello"))
    System.out.println(s);

将显示Hello

确保对象的类覆盖equals()hashCode()

如果您的目标是比较对象,最好的方法是调用compareTo(),但您的类必须实现Comparable接口。