我正在使用 Joda Time library从 LocalDate 中减去一个月:
LocalDate date = new LocalDate(2013, 3, 31);
System.out.println(date.minusMonths(1));
结果是 2013-02-28,这是我的直觉预期,也记录在 API 中:
If subtracting months makes the day-of-month invalid, it is adjusted to the last valid day in the month.
但是,在我当前的项目中,我需要像这样与一些现有的 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));
关于java - 使用 Joda Time 模拟 PHP 日期计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16039169/