首页 > 解决方案 > 我想根据我得到的毫秒时间来获得今天或昨天的一天

问题描述

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

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

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

标签: javadatetimedate-comparison

解决方案


正如评论中提到的那样,通常today并不意味着24几小时前。

假设 now is 2018-10-06 15:202018-10-06 00:01应该被认为是today,while 2018-10-05 23:59is yesterday,尽管它们都在24几小时之内。


该解决方案适用于上述假设。

获取今天的起始毫秒数:

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

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

然后与之比较:

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

但要小心,当开始毫秒是 beforetoday时,并不意味着它是yesterday,它可能会早一天。


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

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

推荐阅读