我正在使用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实现相同的行为?
答案 0 :(得分:1)
PHP似乎减去了它在上个月找到的天数。这应该与Joda一起做:
LocalDate date = new LocalDate(2013, 3, 31);
int numberOfDays = date.minusMonths(1).dayOfMonth().getMaximumValue();
System.out.println(date.minusDays(numberOfDays));