Java 日期无法正常工作

Java Date not working correctly

让我们有以下内容:

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?

如果你想比较两个Date变量,有一些方法提供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 对象之一的值,您会看到其中有毫秒数,只是在以特定格式打印时没有显示。

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