如何在Android中检查日期位于10天内

时间:2018-09-04 18:36:19

标签: java android

我已编写此代码来检查给定的日期是10天内还是10天内,但是AlarmManager.INTERVAL_DAY始终为0。如何在Android或Java中检查给定日期在10天内?

long lastdate=1535826537767

if ((System.currentTimeMillis() - lastdate) < (AlarmManager.INTERVAL_DAY * 10)) {
    Log.d("Status", "Date within 10 days")       
} else {
    Log.d("Status", "Date within 10 days")
}

2 个答案:

答案 0 :(得分:3)

简单地:

long ten_days_in_in_millis = 864000000;
if ((System.currentTimeMillis() - lastdate) < ten_days_in_in_millis) {..

答案 1 :(得分:2)

java.time

您可以使用Java 8及更高版本中内置的java.time类来检查特定日期是否在最近10天内。

首先:将lastdate(您已经拥有)转换为LocalDate。

Instant instant = Instant.ofEpochMilli(lastdate) ; // A moment in UTC.
LocalDate originalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); 
LocalDate tenDaysOldDate= LocalDate.now().minusDays(10); //10 days old date

if (Period.between(tenDaysOldDate, originalDate ).getDays() > 10)
      //greater than 10 days

LocalDate是不可变的并且是线程安全的。该类应优先于有问题的Date类。

Period也是不可变的并且是线程安全的。它以年,月和日为单位来度量时间。


大多数 java.time 功能都已在ThreeTen-Backport项目中反向移植到Java 6和Java 7。在ThreeTenABP项目中进一步适用于较早的Android。参见How to use ThreeTenABP…