首页 > 解决方案 > 如何在 Java 中查看时间戳是否超过 X 天前?

问题描述

在我的 Firebase 数据库中,对于每个存在的项目,我都会保存它的创建日期并插入到数据库中。日期使用ServerValue.TIMESTAMP保存,值保存为 Map。如何在 Java 中将保存的值与今天的当前日期进行比较?

我需要知道商品的日期是否超过 14 天。谢谢

在此处输入图像描述

标签: javaandroidfirebasedatetimestamp

解决方案


屏幕截图中的数字表示从纪元开始的毫秒数,您可以使用Instant.ofEpochMilli. 一旦你有了Instant,你可以将它转换成其他日期时间类型,例如

import java.time.Instant;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) {
        ZonedDateTime zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(1616686018322L), ZoneOffset.UTC);
        System.out.println(zdt);
        ZonedDateTime now = ZonedDateTime.now(ZoneOffset.UTC);
        if (now.minusDays(14).isAfter(zdt)) {
            System.out.println("The item is 14 or more days older");
        } else {
            System.out.println("The item less than 14 days older");
        }
    }
}

输出:

2021-03-25T15:26:58.322Z
The item less than 14 days older

请注意,上面显示的比较考虑了所有单位(精度高达纳秒)。但是,如果您只想比较日期(而不是日期和时间),您可以在ZonedDateTime#toLocalDate.

从Trail: Date Time了解有关现代日期时间 API 的更多信息。


推荐阅读