从System.currentTimeMillis值剥离秒和毫秒

ala*_*mar 3 java time

假设我有一个System.currentTimeMillis()值作为long数字.

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

我宁愿不使用魔法常量.使用java.time很好.

Ole*_*.V. 5

我同意推荐的答案java.time,但它可以在这些答案中更简单地完成:

    long lastWholeMinute = Instant.now().truncatedTo(ChronoUnit.MINUTES).toEpochMilli();
Run Code Online (Sandbox Code Playgroud)

这只是给了1517940060000.当然,如果您保留Instant对象是有意义的,那么一定要做到这一点而不是转换为裸基元long.

如果您的long价值是您存储的价值而不是现在的时间,那么它非常相似:

    long someEpochMilliValue = 1_517_941_234_567L;
    long lastWholeMinute = Instant.ofEpochMilli(someEpochMilliValue)
            .truncatedTo(ChronoUnit.MINUTES)
            .toEpochMilli();
Run Code Online (Sandbox Code Playgroud)