一尘不染

用Java计算日期差

java

我觉得很有趣,Java(或java.util库)没有内置函数来计算日期差。我想从另一个减去一个日期,以获得它们之间的经过时间。做这个的最好方式是什么?

我知道简单的方法是将时间差以毫秒为单位,然后将其转换为天。但是,我想知道这是否在所有情况下都有效(带夏令时等)。


阅读 452

收藏
2020-03-23

共2个答案

一尘不染

我知道简单的方法是将时间差以毫秒为单位,然后将其转换为天。但是,我想知道这是否在所有情况下都有效(使用夏令时等)。

如果你的时间是从UTC日期得出的,或者它们只是在同一系统上两次调用System.getCurrentTimeMillis()的时间差,则你将获得有效的毫秒数,与任何时区问题无关。(这就是为什么所有内容都应使用UTC作为存储格式的原因-从UTC->当地时间开始要容易得多;如果尝试采用其他方式,则需要将本地时区与当地时间一起存储-或尝试推断,g!)

至于将其转换为几天,你应该只能将其除以86400000,但要注意,每隔一年左右偶尔会有一次leap秒。

2020-03-23
一尘不染

如果您关注开放源代码,那么Java并不会丢失太多:尝试Joda-Time。

2020-03-23