猿问

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

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


    if((data.getStartTimeMilli()-86400000) < data.getStartTimeMilli())

    {

        return "Today";

    }

    else 

    {

        return "Yesterday";

    }

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


暮色呼如
浏览 196回答 2
2回答

HUX布斯

正如评论中提到的,通常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) {&nbsp; &nbsp; return "Today";} else&nbsp; &nbsp; return "Yesterday";}但是要小心,当开始毫秒在之前时today,并不意味着它是yesterday,它可能会提前一天。如果您确实想在24 hours今天使用限制:Instant instant = Instant.now().minusMillis(86400000);long millis = instant.toEpochMilli();

一只斗牛犬

有很多方法可以找到它。使用简单的 Java API:Calendar c = Calendar.getInstance();&nbsp;c.set(Calendar.HOUR_OF_DAY, 0);&nbsp;c.set(Calendar.MINUTE, 0);&nbsp;c.set(Calendar.SECOND, 0);&nbsp;c.set(Calendar.MILLISECOND, 0);&nbsp;// Assuming we are expecting milliseconds from today or yesterday only.&nbsp;if(( System.currentTimeMillis() - c.getTimeInMillis()) > 0 )&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return "Today";&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return "Yesterday";&nbsp; &nbsp; &nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答