如何获取两个 java 日期之间的天数,同时比较日期和时间
How to get the number of days between two java dates, comparing both the date and also time
我正在尝试使用以下代码计算两个 java date
对象之间的天数:
public static int daysBetweenDates(Date startDate, Date endDate)
{
return Days.daysBetween( new LocalDate(startDate.getTime()), new LocalDate(endDate.getTime())).getDays();
}
我这里用的是Joda
时间。但我的问题是,当我比较两个日期时,例如:Mon Apr 11 09:04:00 IST 2016 和 Wed Apr 13 11:04:00 IST 2016,我得到的结果是 2。事实上,我期待的结果是3 因为给定日期之间相隔超过 2 天。有什么办法吗
这里绝对不需要使用 Joda 时间或 java.time。一天是 (86400 * 1000) 毫秒。 Java Date
s 以 Posix 纪元中的 UTC 毫秒形式给出当前时间。所以...
long diffMillis = endDate.getTime() - startDate.getTime();
int deltaDays = (int) Math.ceil(diffMillis / (86400.0 * 1000.0));
Days.daysBetween()
的 JavaDoc 说(强调我的):
Creates a Days representing the number of whole days between the two
specified partial datetimes.
所以只要检查是否有"left-overs",如果有则增加:
LocalDateTime now = new LocalDateTime();
LocalDateTime then = now.minusDays(2).minusMinutes(5);
int numberOfDaysBetween = Days.daysBetween(then, now).getDays();
LocalDateTime fullDayTime = then.plusDays(numberOfDaysBetween);
if (fullDayTime.isBefore(now)) {
numberOfDaysBetween++;
}
这应该以 numberOfDaysBetween
为 3 结束,因为 then
是 2 天 和 now
之前的 5 分钟 。
我正在尝试使用以下代码计算两个 java date
对象之间的天数:
public static int daysBetweenDates(Date startDate, Date endDate)
{
return Days.daysBetween( new LocalDate(startDate.getTime()), new LocalDate(endDate.getTime())).getDays();
}
我这里用的是Joda
时间。但我的问题是,当我比较两个日期时,例如:Mon Apr 11 09:04:00 IST 2016 和 Wed Apr 13 11:04:00 IST 2016,我得到的结果是 2。事实上,我期待的结果是3 因为给定日期之间相隔超过 2 天。有什么办法吗
这里绝对不需要使用 Joda 时间或 java.time。一天是 (86400 * 1000) 毫秒。 Java Date
s 以 Posix 纪元中的 UTC 毫秒形式给出当前时间。所以...
long diffMillis = endDate.getTime() - startDate.getTime();
int deltaDays = (int) Math.ceil(diffMillis / (86400.0 * 1000.0));
Days.daysBetween()
的 JavaDoc 说(强调我的):
Creates a Days representing the number of whole days between the two specified partial datetimes.
所以只要检查是否有"left-overs",如果有则增加:
LocalDateTime now = new LocalDateTime();
LocalDateTime then = now.minusDays(2).minusMinutes(5);
int numberOfDaysBetween = Days.daysBetween(then, now).getDays();
LocalDateTime fullDayTime = then.plusDays(numberOfDaysBetween);
if (fullDayTime.isBefore(now)) {
numberOfDaysBetween++;
}
这应该以 numberOfDaysBetween
为 3 结束,因为 then
是 2 天 和 now
之前的 5 分钟 。