php - 将日期增加 1 个月时出错

标签 php datetime

我遇到了一个奇怪的问题,对于以下情况,日期增加一个月 对于日期输入为 2014-01-31我得到2014-03-03而它应该是“2014-02-28”

我正在使用以下代码

$time = strtotime("2014-01-31");
$final = date("Y-m-d", strtotime("+1 month", $time));

最佳答案

当您在 1 月 30 日或 31 日使用 php 中的 +1 月份时,它会出现意外行为。你将在三月得到一个约会。这是因为 php online 将月份数字增加 1(因此 2014-01-31 将变为 2014-02-31。这不存在,因此 php 会将其更正为 2012-02-28 + 3。

这将在月底为您带来正确的结果。

$d = new DateTime( '2014-01-31' );
$d->modify( 'last day of +1 month' );
$final = $d->format( 'Y-m-d' );

这在 php 手册中进行了解释:http://php.net/manual/en/function.strtotime.php#107331

关于php - 将日期增加 1 个月时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21603980/

相关文章:

mysql:从表中选择 * 时更改日期时间格式

c# - 将 char 数据类型转换为 datetime 数据类型导致日期时间值超出范围错误

php - 为什么我将日期时间从 javascript 传递到 php 后得到不同的日期值?

php - Phalcon在模型中执行sql查询

php - ID 不是整数... EasyAPNS

ruby - Ruby 中 DateTime 的毫秒分辨率

python - 使用变量和时间戳的输出写入文件

php - x 个字符之后的函数explode(),而不是标点符号

php - 如何将多行计数与其容器分组

php - 使用 LIKE 时如何按大多数匹配项对 MySQL 结果进行排序