-1

我在 JAVA 中遇到 localDateTime 的问题。

我正在使用 isAfter 函数来比较两个日期时间,但只有在时间有变化但日期没有变化时才返回正确的值。

程序:

import java.time.LocalDateTime;

public class LocalDatTimeVerificaiton {

    public static void main(String[] args) throws Exception {

        LocalDateTime dateTime=LocalDateTime.now();
        System.out.println(dateTime);
        Thread.sleep(10000);
        LocalDateTime dateTime1=LocalDateTime.now();
        System.out.println(dateTime1);
        if(dateTime1.isAfter(dateTime)){
            System.out.println(dateTime+" After "+dateTime1);
        }

        if(dateTime1.isAfter(dateTime)){
            System.out.println(dateTime1+" After "+dateTime);
        }else{
            System.out.println(dateTime1+" Not After "+dateTime);
        }

    }
}

输出 实际

2017-08-11T18:32:00.466
2017-08-11T18:32:10.467
2017-08-11T18:32:00.466 After 2017-08-11T18:32:10.467
2017-08-11T18:32:10.467 After 2017-08-11T18:32:00.466

预期的

2017-08-11T18:32:00.466
2017-08-11T18:32:10.467
2017-08-11T18:32:00.466 After 2017-08-11T18:32:10.467
2017-08-11T18:32:10.467 Not After 2017-08-11T18:32:00.466

这是预期的行为还是我错过了什么?

4

1 回答 1

6

为什么你期望18:32:10在之前18:32:00

您可能会被代码中的拼写错误误导:

if (dateTime1.isAfter(dateTime)) {
  System.out.println(dateTime + " After " + dateTime1);
                            ^^^                   ^^^
}

应该是:

if (dateTime1.isAfter(dateTime)) {
  System.out.println(dateTime1 + " After " + dateTime);
                            ^^^                    ^^^
}
于 2017-08-11T13:15:48.237 回答