Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅减去两个Java.util.date对象的日期部分?_Java_Date - Fatal编程技术网

如何仅减去两个Java.util.date对象的日期部分?

如何仅减去两个Java.util.date对象的日期部分?,java,date,Java,Date,我理解,为什么我们得到0(毫秒数的差异并不等于24小时),但我无法理解需要做什么才能得到1。 任何建议。 提前感谢。您可以将日期转换为LocalDateTime Date dateOne= new Date(121,2,19,23,26,30); Date dateTwo= new Date(121,2,20,01,26,30); long diff = dateTwo.getTime()-dateOne.getTime(); TimeUnit.DAYS.convert(

我理解,为什么我们得到0(毫秒数的差异并不等于24小时),但我无法理解需要做什么才能得到1。 任何建议。
提前感谢。

您可以将日期转换为LocalDateTime

   Date dateOne= new Date(121,2,19,23,26,30);
   Date dateTwo= new Date(121,2,20,01,26,30);
   long diff = dateTwo.getTime()-dateOne.getTime();
   TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS)  // We need 1, result is 0
现在获取两者之间的持续时间

Date feedDate= new Date(121,2,19,23,26,30);
Date tarcDate= new Date(121,2,20,01,26,30);
ZonedDateTime feed = ZonedDateTime.ofInstant(feedDate.toInstant(), ZoneId.systemDefault());
ZonedDateTime tarc = ZonedDateTime.ofInstant(tarcDate.toInstant(), ZoneId.systemDefault());
印刷品

Duration d = Duration.between(feed, tarc);
System.out.println(d);            // in ISO 8601 format
System.out.println(d.toHours());  // as a long
long days = ChronoUnit.DAYS.between(feed.toLocalDate(), tarc.toLocalDate());
System.out.println(days);
并使用以下方法获得每个建议的天数差异

PT2H
2
印刷品

Duration d = Duration.between(feed, tarc);
System.out.println(d);            // in ISO 8601 format
System.out.println(d.toHours());  // as a long
long days = ChronoUnit.DAYS.between(feed.toLocalDate(), tarc.toLocalDate());
System.out.println(days);

Date的一些方法和构造函数已被弃用,因此最好在包中使用类。

为什么要使用
java.util.Date
?如果可以,请使用
java.time.LocalDate
。对不起。不能那样做。从外部模块传递的参数。我们的函数需要检查两个通过的日期是否属于同一日历日期,而不考虑时间。如果不是,一个比另一个落后多少?如果dateOne==dateTwo->您仍然想要1天作为差额?解释需要1的原因和原因。
java.util.Date
表示时间上的一个瞬间。它没有关联的日历系统或时区。如果两个
java.util.Date
实例(例如)相隔12小时,则它们是否出现在同一日历日期取决于时区。“如果dateOne是3月19日2350小时”-这不能直接在
java.util.Date
中表示,因为它假定一个特定的时区。虽然没有正式反对,我认为
Date
实际上已被弃用。