Java日期不正确工作

3

让我们来看以下内容:

Date inDbDate = null;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

inDbDate = sdf.parse("2015-09-27 23:24:28.035");

现在,当我输出inDbDate时,我收到以下内容:
Sun Sep 27 23:24:28 EEST 2015

如果我有两个日期,它们的毫秒差异很小,就无法找出或显示它。

如何比较具有此格式的两个日期 - 2015-09-27 23:24:28.035?


1
输出仅为人类的表示,内部则是您的毫秒。 - user180100
2个回答

3
如果你想比较两个日期变量,可以使用一些方法:after()、before()和equals()。
 private void someMethod(){
    final String dateFormat = "yyyy-MM-dd HH:mm:ss.SSS";
    Date firstDate = new Date();
    Date secondDate = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
    try {
        firstDate = sdf.parse("2015-09-27 23:24:28.035");
        secondDate = sdf.parse("2015-09-27 23:24:28.036");
    } catch (ParseException pe) {
        pe.getMessage();
    }
    if(firstDate.after(secondDate)) {
        System.out.println("The first date is after the second date");
    } else{
        System.out.println("The first date is before the second date");
    }

}

您可以将以上方法复制并粘贴到您的IDE中,然后尝试更改Date变量中的时间,查看结果以及更改if语句中执行的检查。如果在调试器中查看一个Date对象的值,您可以看到毫秒数是存在的,只是以某种格式打印时没有显示出来。

你应该添加两个日期相等的情况。 - SubOptimal

1
1/ you should parse inDbDate with date format ==> inDbDate = sdf.parse("2015-11-11 23:24:28.035");

2/ you can now compare the two dates

    if (inDbDate.compareTo(new Date()) > 0) {
         System.out.println("inDbDate is after the current date !!");
    }

3/ if you want to display, you format it
System.out.println("current time = " + sdf.format(new Date()));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接