如何在JDK7中找到两个日期之间的差异,以便可以添加差异以使两个日期相等?
我尝试使用类似StackOverflow问题的解决方案,从另一个中减去一个日期的毫秒数,但这可能导致日期之间的差异不正确.
在这个例子中,我尝试通过设置使其a相等ba = (b-a) + a
private void makeTwoDatesEqual(GregorianCalendar a, GregorianCalendar b, DatatypeFactory datatypeFactory) {
long b_minus_a = b.getTimeInMillis() - a.getTimeInMillis();
Duration delta = datatypeFactory.newDuration(b_minus_a);
delta.addTo(a);
}
Run Code Online (Sandbox Code Playgroud)
但结果出人意料:
之前
a = "2015-08-29T00:00:00.000Z"
b = "2040-01-01T00:00:00.000Z"
delta = "P24Y4M5DT0H0M0.000S" // 2 days longer than it should be.
Run Code Online (Sandbox Code Playgroud)
后
a = "2040-01-03T00:00:00.000Z"
b = "2040-01-01T00:00:00.000Z"
delta = "P24Y4M5DT0H0M0.000S"
a.equals(b) = false
Run Code Online (Sandbox Code Playgroud)
Joda-Time也有同样的问题:
private void makeTwoDatesEqual(GregorianCalendar a, GregorianCalendar b) {
DateTime date1 = new DateTime(a); …Run Code Online (Sandbox Code Playgroud)