我想根据我得到的毫秒级时间来决定今天是今天还是昨天

时间:2018-10-06 06:58:01

标签: java datetime date-comparison

今天和昨天我都必须返回字符串。我从函数获得的毫秒数,那我该怎么办?我尝试了很多。

    if((data.getStartTimeMilli()-86400000) < data.getStartTimeMilli())
    {
        return "Today";
    }
    else 
    {
        return "Yesterday";
    }

但是它只会在今天返回。 我在函数中传递了两个毫秒值,一个是startdatemilienddatemili。 是一个日期范围。

2 个答案:

答案 0 :(得分:4)

如评论中的硫磺硫醚一般,today并不意味着24小时前。

假设现在是2018-10-06 15:202018-10-06 00:01应该被视为today,而2018-10-05 23:59yesterday,尽管两者都在24之内小时。


此解决方案适用于以上假设。

获取今天的起点:

ZonedDateTime zonedDateTime = ZonedDateTime.now();
zonedDateTime = zonedDateTime.truncatedTo(ChronoUnit.DAYS);

long millis = zonedDateTime.toInstant().toEpochMilli();

然后与之比较:

if((data.getStartTimeMilli() > millis) {
    return "Today";
} else
    return "Yesterday";
}

但是要小心,当起始Milli早于today时,并不表示它是yesterday,可能要早一天。


如果您确实想使用24 hours来限制今天:

Instant instant = Instant.now().minusMillis(86400000);
long millis = instant.toEpochMilli();

答案 1 :(得分:2)

有很多方法可以找到它。

使用简单的Java API:

word