2015-12-21 90 views
0

我找到大量关于如何比较2个日期的参考,但它们似乎都是比较DateTime而不是日期。Android日期时间比较仅限日期精度

我将最后更新保存到SQLite中,它要求它是DateTime。 稍后,我将该值作为字符串检索,然后将其转换回Android日期(实际上是DateTime)。

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
Date LastDate = formatter.parse(LastUpdate); 

然后我比较它与今天(这也是一个DateTime)

Date today = Calendar.getInstance().getTime(); 

我试图用

today.compareTo(LastDate) 

但是却仿佛那精度变直到时间部分。
这意味着即使日期相同,但一次不同,结果可能是基于时间部分的+或 - 。

我只想使用完整日期的精度,忽略时间部分。

我该如何获得该精确度?

感谢

+0

一种选择可能是每个日期转换为日期的开始,然后对它们进行比较,所以即使如果他们都是00:00,那么这个比较会像你想要的那样工作。 – AdamMc331

+1

谢谢你的回复。你的答案和Markus'下面都说了同样的事情,尽管它是一个解决不良数据库体系结构(字段类型限制)的解决方法,但这对我来说很有用。谢谢 – Dhugalmac

回答

2

拿在DateUtils.class看看isToday(long when)。它只是比较年份,月份和月份。如果这不是你在找什么,你可以在你的日期设置为午夜之前,你对它们进行比较,如:

Calendar today = Calendar.getInstance(); 
    today.set(HOUR_OF_DAY, 0); 
    today.set(MINUTE, 0); 
    today.set(SECOND, 0); 
    today.set(MILLISECOND, 0); 

    Calendar date = Calendar.getInstance(); 
    date.setTime(formatter.parse(LastUpdate)); 
    date.set(HOUR_OF_DAY, 0); 
    date.set(MINUTE, 0); 
    date.set(SECOND, 0); 
    date.set(MILLISECOND, 0); 

    today.compareTo(date)