java - 我想根据我得到的毫秒时间来获取今天或昨天的日期

标签 java datetime date-comparison

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

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

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

最佳答案

正如评论中提到的,通常今天并不意味着24小时前。

假设现在是2018-10-06 15:202018-10-06 00:01应该被视为今天,而2018-10-05 23:59昨天,尽管它们都在24小时之内。

<小时/>

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

获取今天的开始毫秒数:

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

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

然后与之比较:

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

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

<小时/>

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

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

关于java - 我想根据我得到的毫秒时间来获取今天或昨天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52676499/

相关文章:

java - 在 Spring 中覆盖库版本

java - 如何动态创建和删除 JTextArea

c# - 星期几的整数表示

c# - 如何在随机字符串中获取日期时间?

c# - 日期时间和 CultureInfo

MySql 查询未返回正确的数据

java - 根据年月比较两个日期,不注意日期

java - 检测 View 上的滑动手势和触摸事件

java - Eclipse 上的语法错误(公共(public)静态变量)

java - 如何将 int 值与多个字符串值进行比较。所以它适用于数据库。值(value)转化失败