我的日期类有以下问题。我想比较日期类的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
我必须使用日期类来正确比较日期!
答案 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