Java日期类比较两个日期字符串

时间:2016-06-05 15:24:35

标签: java string date time string-comparison

我的日期类有以下问题。我想比较日期类的toString()方法附带的字符串,以及用户提供的字符串作为日期和时间。比较两个字符串时,即使我复制/粘贴日期和时间,equals()也总是返回false!有没有办法只将日期和时间字符串与Date类成功比较?非常感谢!!

import java.util.Date;
import java.util.Scanner;
public class SystemTest {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);


        String timeNow = new String((new Date()).toString());
        System.out.println(timeNow);
        System.out.println("Give date and time: ");
        String time = new String(input.next());

        if(time.equals(timeNow)){
            System.out.println("same");
        }else{
            System.out.println("Not same..");
        }
    }

}

EDITED

我必须使用日期类来正确比较日期!

3 个答案:

答案 0 :(得分:1)

由于还没有人解释为什么你不应该将日期作为字符串进行比较,我会这样做。 A" date"是一个表示即时的抽象概念,Java Date(或最近的java.time.*中的类)是实现该抽象概念的类。字符串(即来自toString)只是表达瞬间抽象概念的一种方式,正如您所知,不同的地方有不同的表达日期/时间的方式。

如果你想比较时间"中的抽象"瞬间,那么你应该将用户的输入解析为代表该瞬间的类并比较瞬间。这样您就可以验证用户的输入是否代表有效的瞬间,而不是因为用户输入了一个简单的拼写错误而返回错误的结果。

然后是整个时区问题,但这是一个超出范围的巨大话题。日期操作是一个非常深刻和复杂的主题,很难做到正确。

答案 1 :(得分:0)

您应该使用Date类中的 compareTo 方法。

timeNow.compareTo(time);

答案 2 :(得分:0)

您需要比较日期而不是字符串。您需要将用户提供的字符串解析为Date,然后将其与另一个日期进行比较。类日期包含方法before(Date)after(Date)compareTo(Date)请参阅课程日期的Javadoc API:https://docs.oracle.com/javase/8/docs/api/java/util/Date.html