【问题标题】:How to compare dates in Android app? [duplicate]如何在 Android 应用中比较日期? [复制]
【发布时间】:2013-09-21 04:20:44
【问题描述】:

在此问题被标记为重复之前,它不是。我知道this question,我尝试使用它的答案,但到目前为止无济于事。

我有某个事件发生的日期,我有 DateTime.now()。如果日期是今天或昨天的日期,我现在想显示“今天”或“昨天”。如果不是(它在过去),则应该简单地打印日期。为此,我想知道 DateTime.now() 和事件发生的 DateTime 之间的天数差异。所以我尝试了这个:

DateTime actionDate = overviewevent.getActionDate();
Log.wtf(TAG, actionDate.toString()); // Prints 2013-09-06T08:47:04.000+01:00
LocalDate localActionDate = actionDate.toLocalDate();
LocalDate localNow = DateTime.now().toLocalDate();
// First try
Log.wtf(TAG, Integer.toString(localActionDate.compareTo(localNow)));
// Second try
Log.wtf(TAG, Integer.toString(DateTimeComparator.getDateOnlyInstance().compare(actionDate, DateTime.now())));

即使 now() 和 actionDate 之间有 10 天,我尝试的这两件事都只是打印“1”。

有人知道我怎样才能知道日期相隔多少天吗?

【问题讨论】:

  • 什么是DateTime?这个类似乎不是 Android API 的一部分。此外,compareTo 方法用于比较(更少、更多、相同),而不是用于差异(例如天数)。这就是它打印1的原因。
  • @DanielGabriel - 对不起。 DateTime 来自 org.joda.time.DateTime;
  • 好的,谢谢。看看这是否有帮助:stackoverflow.com/questions/3802893/…

标签: java android date datetime jodatime


【解决方案1】:

我会说它不是在打印1,而是-1

compare 函数只是比较两个日期,它不计算时间差。查看 Joda Time documentation 了解更多信息。另外,我建议您阅读更通用的 Java 接口 Comparator,它是 Java 语言的基本单元。

到目前为止,我从未使用过 Joda Time,但我读到 here ,您的问题的解决方案可能是

Days.daysBetween(actionDate.toDateMidnight(), DateTime.now().toDateMidnight()).getDays()

【讨论】:

  • 我刚刚尝试过,但令人惊讶的是,这现在给了我 -12256(尽管从 2013 年 9 月 6 日到今天(2013 年 9 月 16 日)之间实际上只有 10 天。知道为什么这可能是?
  • 你说今天是 2013 年 9 月 16 日,但你的设备是这样说的吗? DateTime.now() 打印什么?这可以解释1,也许..
  • 太棒了!这确实是问题所在!非常感谢!
猜你喜欢
  • 2011-02-23
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2013-05-30
  • 1970-01-01
  • 2010-09-25
相关资源
最近更新 更多