使用Joda Time模拟PHP日期计算

时间:2013-04-16 14:00:59

标签: java php jodatime

我正在使用Joda Time library从LocalDate减去一个月:

LocalDate date = new LocalDate(2013, 3, 31);
System.out.println(date.minusMonths(1));

结果是2013-02-28,这是我直觉所期望的,也是API中记录的:

  

如果减去月份会使日期无效,则会将其调整为最后一次有效   这个月的一天。

但是,在我目前的项目中,我需要兼容一些现有的PHP代码:

$date = new \DateTime('2013-03-31');
echo $date->sub(new \DateInterval('P1M'))->format('Y-m-d');

此处的结果将是2013-03-03,即它将“滚动”到下个月。

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

1 个答案:

答案 0 :(得分:1)

PHP似乎减去了它在上个月找到的天数。这应该与Joda一起做:

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