java - 使用 Joda Time 模拟 PHP 日期计算

标签 java php jodatime

我正在使用 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/

相关文章:

java - Ant 任务定义 OpenJDK 11 JavaFX SDK 11 Eclipse 2018-12

java - 如何计算大于限制的数字,并使用 BigInteger

java - 如何在java中动态地将字符串列表拆分为多个列表

php - 将数据从 Controller 传递到 Blade View laravel

java - monthOfYear 的解析器模式不是零填充且没有文字文本分隔

java - 数据库与数据表日期显示值不同

javascript - 如何在azure网站上将变量从javascript发送到PHP?

datetime - 如何从 Scala 中的 joda-time DateTime 中减去一天/小时/分钟?

java - Maven 构建在运行时抛出 JodaTime 异常

php - SQL 查询在 MYSQL 中花费更少的时间,在 PHP 应用程序中花费更多时间