我将一些数据插入到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点重新安排这份工作,所以程序必须明白,差别就是有一天。所以很明显,我必须绕到第一个更大的数字。是否有一些方法或我必须自己写?
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);
答案 0 :(得分:3)
答案 1 :(得分: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中的subtle bug