Java 使用Joda Time模拟PHP日期计算

Java 使用Joda Time模拟PHP日期计算,java,php,jodatime,Java,Php,Jodatime,我使用从LocalDate中减去一个月: LocalDate date = new LocalDate(2013, 3, 31); System.out.println(date.minusMonths(1)); 结果是2013-02-28,这是我直觉上预期的结果,也记录在: 如果减去月份使月日无效,则调整为最后一个有效日期 一个月中的第二天 但是,在我当前的项目中,我需要与一些现有的PHP代码兼容,如下所示: $date = new \DateTime('2013-03-31'); echo

我使用从LocalDate中减去一个月:

LocalDate date = new LocalDate(2013, 3, 31);
System.out.println(date.minusMonths(1));
结果是2013-02-28,这是我直觉上预期的结果,也记录在:

如果减去月份使月日无效,则调整为最后一个有效日期 一个月中的第二天

但是,在我当前的项目中,我需要与一些现有的PHP代码兼容,如下所示:

$date = new \DateTime('2013-03-31');
echo $date->sub(new \DateInterval('P1M'))->format('Y-m-d');
这里的结果将是2013-03-03,也就是说,它将“滚动”到下个月


如何使用Joda Time实现相同的行为?

PHP似乎要减去上个月的天数。这应该与Joda一起完成:

LocalDate date = new LocalDate(2013, 3, 31);
int numberOfDays = date.minusMonths(1).dayOfMonth().getMaximumValue();
System.out.println(date.minusDays(numberOfDays));