3 回答
TA贡献1883条经验 获得超3个赞
您首先将毫秒转换为Date或LocalDate,然后运行比较。
这是一个简单的例子:
import java.time.*;
class DateCheckSample {
public static void main(String[] args) {
// Our input date
long millis = System.currentTimeMillis();
// Convert the millis to a LocalDate
Instant instant = Instant.ofEpochMilli(millis);
LocalDate inputDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
// Grab today's date
LocalDate todaysDate = LocalDate.now();
System.out.println(millis);
// Check if date is yesterday
if (todaysDate.minusDays(1).equals(inputDate)) {
System.out.println(inputDate + " was yesterday!");
} else {
System.out.println(inputDate + " was NOT yeseterday!");
}
}
}
结果:
2019-02-16 was NOT yesterday!
如果您想确认它是否正常工作,只需在运行前减去100000000。millis
旁注:正如您对问题的评论中指出的那样,这23:59不是一个毫秒值......
TA贡献1856条经验 获得超11个赞
如果您不想使用Date,您可以简单地使用模数运算符和一些巧妙的算术。System#currentTimeMillis返回自 1970 年 1 月 1 日午夜 (00:00) 以来经过的毫秒数。
将此与一天中的毫秒数(86,400,000)结合起来,我们可以计算出一天的最后开始时间——也就是今天开始的时间。然后我们可以查看给我们的时间是小于还是大于该值。
boolean isToday(long milliseconds) {
long now = System.currentTimeMillis();
long todayStart = now - (now % 86400000);
if(milliseconds >= todayStart) {
return true;
}
return false;
}
要检查某个时间是否是昨天而不是今天,我们只需检查它是否在今天开始和昨天开始之间。
boolean isYesterday(long milliseconds) {
long now = System.currentTimeMillis();
long todayStart = now - (now % 86400000);
long yesterdayStart = todayStart - 86400000;
if(milliseconds >= yesterdayStart && < todayStart) {
return true;
}
return false;
}
添加回答
举报
