我觉得很有趣,Java(或java.util库)没有内置函数来计算日期差。我想从另一个减去一个日期,以获得它们之间的经过时间。做这个的最好方式是什么?
我知道简单的方法是将时间差以毫秒为单位,然后将其转换为天。但是,我想知道这是否在所有情况下都有效(带夏令时等)。
我知道简单的方法是将时间差以毫秒为单位,然后将其转换为天。但是,我想知道这是否在所有情况下都有效(使用夏令时等)。
如果你的时间是从UTC日期得出的,或者它们只是在同一系统上两次调用System.getCurrentTimeMillis()的时间差,则你将获得有效的毫秒数,与任何时区问题无关。(这就是为什么所有内容都应使用UTC作为存储格式的原因-从UTC->当地时间开始要容易得多;如果尝试采用其他方式,则需要将本地时区与当地时间一起存储-或尝试推断,g!)
至于将其转换为几天,你应该只能将其除以86400000,但要注意,每隔一年左右偶尔会有一次leap秒。
如果您关注开放源代码,那么Java并不会丢失太多:尝试Joda-Time。