3

我将一些数据插入到 Sqlite 数据库中,并在插入之前检查这一天的记录是否已经存在。要检查这一点,我必须查看天数是否> 0。例如,2011-8-6 和 2011-8-5 之间的差异(以天为单位)为 1。如何在 Java 中执行此操作?

编辑:正如@RayToal 提到的,这可以在数据库中完成,所以我这样做了:

SELECT julianday('now') - julianday(Date(Date)) from VIDEO_HISTORY;

唯一的问题是它给了我十进制数。例如:3.3442346529103816 现在我必须在 Java 内部决定给定的数字是否是 4 天中的 3 天。它的代码适用于在 youtube 上搜索某些术语并将有关每日浏览量的统计数据写入数据库的应用程序。用户可以安排工作,例如每天 20:00 点。但随后他可以决定在 10:00 点重新安排这项工作,因此程序必须理解这一点,就像差一天一样。所以很明显,我必须四舍五入到第一个更大的数字。有什么方法可以解决这个问题还是我必须自己写?

EDIT2:根据@Michael-O 提供的链接,这是最好的解决方案(使用 JodaTime):

DateTime start = new DateTime(new GregorianCalendar(2011, 8, 4).getTime());
DateTime end = new DateTime(new GregorianCalendar(2011, 8, 8).getTime());

int numberOfDays = Days.daysBetween(start.toDateMidnight(), end.toDateMidnight()).getDays();
System.out.println(numberOfDays);
4

2 回答 2

3

您可能需要参考教程。此外,您应该考虑使用 Joda TimePeriod并在 stackoverflow 上查阅答案。

于 2011-08-06T00:51:35.737 回答
2

如果您想要日历天数(java.time 用语中的Period ),请使用(在 Java 8 中):

import java.time.temporal.ChronoUnit;
import java.time.LocalDate;
ChronoUnit.DAYS.between(LocalDate.parse(from.toString()),LocalDate.parse(to.toString())

(这避免了Java 8 的 java.sql.Date API 中的一个细微错误)

如果您想要以天为单位的持续时间(以 24 小时为单位的物理经过时间),请使用Marcelo 的方法。

于 2017-08-17T22:00:16.390 回答