用Java计算日期差

 

问题描述:

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

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


 

第 1 个答案:

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

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

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


 

第 2 个答案:

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


我正在尝试计算(360/24)/ 60当我应该得到0.25时,我一直得到答案0.0换句话说:我想将360除以24,然后将结果除以60public class Divide { publ ...