小编Jay*_*ner的帖子

找到JDK7中日期的真正区别

如何在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)

java datetime date jodatime date-difference

3
推荐指数
1
解决办法
188
查看次数

标签 统计

date ×1

date-difference ×1

datetime ×1

java ×1

jodatime ×1