Java android中两个日期之间的差异

Java android中两个日期之间的差异,java,android,Java,Android,我试图得到当前时间和某一天(比如2013/12/25)之间的毫秒差 我正在使用这个代码 Calendar thatDay = Calendar.getInstance(); thatDay.set(Calendar.DAY_OF_MONTH,25); thatDay.set(Calendar.MONTH,11); // 0-11 so 1 less thatDay.set(Calendar.YEAR, 2013); Calendar today = Calendar.getInstance(

我试图得到当前时间和某一天(比如2013/12/25)之间的毫秒差

我正在使用这个代码

Calendar thatDay = Calendar.getInstance();
thatDay.set(Calendar.DAY_OF_MONTH,25);
thatDay.set(Calendar.MONTH,11); // 0-11 so 1 less
thatDay.set(Calendar.YEAR, 2013);


Calendar today = Calendar.getInstance();

long diff =  thatDay.getTimeInMillis() - today.getTimeInMillis(); 
long days = diff / (24 * 60 * 60 * 1000);

但这段代码有时给出了正确的值,有些时间略有不同。请帮助那些遵守夏令时的地方的人们,一年中的一天是23小时,另一天是25小时,所以假设每天是24小时是错误的。官方时区也可以改变

解决此问题的“正确”方法是使用精心设计的库,例如,但作为快速解决方案,您可以对结果进行四舍五入,以便几个小时内偏离一个方向或另一个方向无关紧要:

long days = Math.round((double) diff / (24 * 60 * 60 * 1000);

虽然不是你的答案,但我建议你看看
date4j
库。非常简单的api来获取差异和基本日期信息。在这里,您还可以查看jodatime library()“这段代码有时会给出正确的值,有时会略有不同”有什么区别?如果将结果除以整数,则将3.9天截断为3天,这将是1天的休息时间。这就是发生的事吗?@zapl:差一天。20或21岁。但这与长时间没有任何关系。可以使用double,结果是21.0或20。0@zapl .. 是的,你说得对。。那是我的问题谢谢你的回答。。如果我想把它转换成day:hor:minute:seconds格式,那么我必须做什么呢?这种格式没有多大意义,除非你假设每天有固定的小时数