Joda DateTime没有给出预期的结果

时间:2011-05-23 11:58:32

标签: java jodatime

在2011年3月31日给出一个DateTime对象,此代码为:

DateTime temp1 = new DateTime(2011, 3, 31, 12, 0, 0, 0);
DateTime temp2 = temp1.plusMonths(1);
DateTime temp3 = temp2.plusMonths(1);

执行后

temp1 = 2011-03-31T12:00:00.000+02:00
temp2 = 2011-04-30T12:00:00.000+02:00
temp3 = 2011-05-30T12:00:00.000+02:00

temp3在这里错了。

以上是否正确。我做错了吗?

1 个答案:

答案 0 :(得分:5)

不,这里没有错。您将两次添加一个月,这意味着您第二次会在添加第一个月的可能被截断的结果中添加一个月的结果。

四月只有30天,这就是为什么你将于4月30日到temp2 - 并且在4月30日增加一个月到达5月30日。

如果您想要5月31日,请使用:

DateTime temp3 = temp1.plusMonths(2);

基本上,日期和时间算术gives "odd" results如果你试图用相关性等来考虑它。