【发布时间】:2018-05-15 12:02:15
【问题描述】:
我需要比较日历时间和日期。我写了下面的代码。
Calendar now = Calendar.getInstance();
now.set(Calendar.SECOND, 0);
Date date = new Date();
date.setSeconds(0);
System.out.println(date);
System.out.println(now.getTime());
System.out.println(date.compareTo(now.getTime()));
输出是
Fri Dec 01 16:54:00 IST 2017
Fri Dec 01 16:54:00 IST 2017
1
似乎实用日期大于日历日期。为什么会失败?比较这些日期的书写方式是什么?
编辑 1:- 我的问题是我需要将 util 日期(存储在数据库中)比方说 2017-12-01 16:41:00.0 与当前日期和时间,什么是写入方法?
【问题讨论】:
-
毫秒/纳秒可以关闭吗?
-
毫秒而不是纳秒,但是是的,那肯定是有问题的。显示
Date.getTime()以明确表示哪些值。不过,这仍然不会总是显示 0,因为时钟可能会在构造日历和构造日期之间“滴答”。 -
注意:即使您更正了这一点,即使在截断秒数之后,日期也可能有更新的时间,因为它在本例中稍晚一些。
-
请注意
Date.setSeconds已被弃用。从技术上讲,Date类已经/将被弃用。 -
顺便说一句,您根本不想比较两者。
Date和Calendar这两个类早已过时并被java.time, the modern Java date and time API 取代。这在日期和日历之间没有相同的区别,因此您永远不会遇到问题。我强烈建议您改用java.time。
标签: java java.util.date date-comparison java.util.calendar