如何使用字符串中的本地日期检查X天是否已过去

时间:2015-07-26 14:31:25

标签: java android sqlite datetime jodatime

我想存储我最后一次在SQLite数据库中插入一个值 所以我使用的是LocalDate.now().toString(),这就是我作为行的一部分存储的内容,即TEXT列。
现在,当我检索行时,我希望能够检查上次更新是否超过X天(不确定X是否还是1或7)。
我怎么能这样做?
我在google中看到的大多数答案涉及locale,我认为它不适合我的情况 所以我被困在这里:

// obj comes from db
LocalDate lastCheck = new LocalDate(obj.getLastUpdate());
//How can I do the check correctly?
if(Days.daysBetween(LocalDate.now(), lastCheck) > X days) {

}

更新
如果有帮助我不需要准确。基本上它就像一个更新缓存,所以如果有一个角落的情况我明确检查我很好用

2 个答案:

答案 0 :(得分:1)

如果您确定拖曳日期是在同一年,您可以使用

   LocalDate.now().getDayOfYear ()-lastCheck.getDayOfYear ()

试试这个

    LocalDate last=LocalDate.of ( 2015, Month.DECEMBER, 31);
    LocalDate now= LocalDate.of ( 2016, Month.JANUARY, 1);
    java.time.Period period=java.time.Period.between ( last, now);
    System.out.println ( period.getDays () );

答案 1 :(得分:0)

获取当前日期(和时间)的最简单方法就是创建一个像这样的新日期:

Date now = new Date();

接下来,您希望使用默认的mysql语法将其存储到SQLite。你可以这样:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = dateFormat.format(now);

然后,当你想稍后从mysql日期语法中取回你的存储日期时,你可以这样做:

Date dateStored = dateFormat.parse(dateString)

我可以看到你正在使用Joda Time库,你可以这样做:

DateTime dateTimeNow = DateTime.now();
DateTime dateTimeStored = new DateTime(dateStored)
Days days = Days.daysBetween(dateTimeStored, dateTimeNow);
int daysNumber = days.getDays()

你拥有它!