【问题标题】:Android DateTime comparison with Date Only precisionAndroid DateTime 与仅日期精度的比较
【发布时间】:2016-03-28 03:02:36
【问题描述】:

我找到了许多关于如何比较 2 个日期的参考资料,但它们似乎都是比较 DateTime 而不是 Dates 本身。

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

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

然后我将它与今天(也是一个日期时间)进行比较

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

我正在尝试使用

today.compareTo(LastDate)

但似乎精确度下降到时间部分。
这意味着即使日期相同,但一次不同,结果也是 + 或 - 基于时间部分。

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

我怎样才能达到这种精确度?

谢谢

【问题讨论】:

  • 一个选项可能是将每个日期转换为该日期的开始,然后比较它们,所以即使它们都为 00:00 时,比较也会像你一样工作想要。
  • 感谢您的回复。您的回答和下面的 Markus 都说了同样的话,并且,虽然它是一种解决不良数据库架构(字段类型限制)的变通方法,但它对我有用。谢谢

标签: android date datetime


【解决方案1】:

查看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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    相关资源
    最近更新 更多