假设我有一个System.currentTimeMillis()值作为long号。

我如何修改它以匹配最后一分钟开始时的瞬间?即零秒和毫秒。

我宁愿不使用魔术常数。使用java.time很好。

最佳答案

我同意建议使用java.time的答案,但是可以像在这些答案中一样简单地完成它:

    long lastWholeMinute = Instant.now().truncatedTo(ChronoUnit.MINUTES).toEpochMilli();

这只是给1517940060000。当然,如果保留Instant对象对您有意义,那么一定要这样做,而不是转换为裸露的原始long

如果long的值是您存储的值而不是现在的时间,则它非常相似:
    long someEpochMilliValue = 1_517_941_234_567L;
    long lastWholeMinute = Instant.ofEpochMilli(someEpochMilliValue)
            .truncatedTo(ChronoUnit.MINUTES)
            .toEpochMilli();

09-10 23:44
查看更多