为了账号安全,请及时绑定邮箱和手机立即绑定

我想根据我得到的毫秒时间得到一天是今天还是昨天

我想根据我得到的毫秒时间得到一天是今天还是昨天

暮色呼如 2021-10-28 17:14:57
我今天和昨天必须返回字符串。我从函数中得到的毫秒数,那么我必须做什么?我尝试了很多。    if((data.getStartTimeMilli()-86400000) < data.getStartTimeMilli())    {        return "Today";    }    else     {        return "Yesterday";    }但它只会在今天返回。我在函数中传递的两个毫秒值,一个是startdatemiliand enddatemili。这是一个日期范围。
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

正如评论中提到的,通常today不是指24几小时前。


假设现在是2018-10-06 15:20,2018-10-06 00:01应该被认为是today,而2018-10-05 23:59是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";

}

但是要小心,当开始毫秒在之前时today,并不意味着它是yesterday,它可能会提前一天。


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


Instant instant = Instant.now().minusMillis(86400000);

long millis = instant.toEpochMilli();


查看完整回答
反对 回复 2021-10-28
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

有很多方法可以找到它。


使用简单的 Java API:


Calendar c = Calendar.getInstance();

 c.set(Calendar.HOUR_OF_DAY, 0);

 c.set(Calendar.MINUTE, 0);

 c.set(Calendar.SECOND, 0);

 c.set(Calendar.MILLISECOND, 0);

 // Assuming we are expecting milliseconds from today or yesterday only.

 if(( System.currentTimeMillis() - c.getTimeInMillis()) > 0 )

        {

            return "Today";

        }

        else 

        {

            return "Yesterday";

        }


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信