相关疑难解决方法(0)

PHP DateTime ::修改添加和减去月份

我一直在努力工作,DateTime class并且最近遇到了我认为添加月份时的错误.经过一些研究后,似乎它不是一个bug,而是按预期工作.根据此处的文档:

示例#2在添加或减去月份时要小心

<?php
$date = new DateTime('2000-12-31');

$date->modify('+1 month');
echo $date->format('Y-m-d') . "\n";

$date->modify('+1 month');
echo $date->format('Y-m-d') . "\n";
?>
Run Code Online (Sandbox Code Playgroud)
The above example will output:
2001-01-31
2001-03-03
Run Code Online (Sandbox Code Playgroud)

任何人都可以证明为什么这不被视为错误?

此外,是否有人有任何优雅的解决方案来纠正问题并使其成为+1个月将按预期工作而不是按预期工作?

php datetime date

96
推荐指数
7
解决办法
8万
查看次数

如何在没有跳过的日期添加1个月即2月

可能重复:
PHP DateTime ::修改添加和减去月份

我有一个开始日期(即2011-01-30),并希望增加1个月.

问题在于定义一个月是什么.所以,如果我使用以下代码:

$d1 = DateTime::createFromFormat('Y-m-d H:i:s', '2011-01-30 15:57:57');
$d1->add(new DateInterval('P1M'));
echo $d1->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:2011-03-02 15:57:57

问题是,我需要它使用以下规则:

  • 如果我加1个月它只会在月份部分添加1并留下一天部分(2011-01-15将成为2011-02-15)
  • 如果当天不存在我们将结束的那天,我们将采取最后一天(2011-01-30将成为2011-02-28)

在PHP中有一个常见的功能可以做到这一点,还是我必须自己编写代码?也许我只是缺少一个参数或什么!?

php datetime

20
推荐指数
2
解决办法
4万
查看次数

标签 统计

datetime ×2

php ×2

date ×1