我已编写此代码来检查给定的日期是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")
}
答案 0 :(得分:3)
简单地:
long ten_days_in_in_millis = 864000000;
if ((System.currentTimeMillis() - lastdate) < ten_days_in_in_millis) {..
答案 1 :(得分:2)
您可以使用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…。