Php DateTime修改函数跳过二月
当使用Php DateTime修改函数跳过二月,php,date,Php,Date,当使用DateTime::modify方法向添加月份时,结果跳过二月 为什么它不输出2020-02-31 如何使用DateTime输出2020-02-29?(每月的最后一天) $date=新的日期时间(“2020-01-31”); echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-03-02 PHPDateTime::modify(“+n个月”)根据月份和年份,在当前日期上添加28到31天 解决方案 我建议您使用modify和format方法从月的第
DateTime::modify
方法向添加月份时,结果跳过二月
- 为什么它不输出
2020-02-31
- 如何使用DateTime输出
?(每月的最后一天)2020-02-29
$date=新的日期时间(“2020-01-31”);
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-03-02
PHPDateTime::modify(“+n个月”)
根据月份和年份,在当前日期上添加28到31天
解决方案
我建议您使用modify
和format
方法从月的第一天开始增加月数:
//实例化DateTime对象。
$date=新日期时间(“2020-01-01”);
//将一个月添加到日期。
$date->modify(“+1个月”);//2020-02-01
//将日期格式化为“t”(获取当月的最后一天)。
$date->格式(“Y-m-t”);//2020-02-29
从一个月的第一天开始递增将永远不会引发2月份的问题,这是一个非常常见的问题,因为PHP DateTime会巧妙地从2020-02-29
和2020-03-31
添加一个月
为什么会这样?
在中,时间为30.436875天:
- 4月、6月、9月和11月的30天李>
- 1月、3月、5月、7月、8月、10月和12月的31天李>
- 2月份28天或29天
2020-03-31
开始增加31天将导致跳过整个4月份
$date=新日期时间(“2020-03-31”);//2020-03-31
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-05-01 |增加了31天(因为3月份有31天)。
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-06-01 |增加了31天(因为新日期是5月1日,这是一个有31天的月份)。
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-07-01 |增加30天
现在,让我们在4月30日的最后一天加上一个月
我们可以看到,由于接下来的几个月都有30多天,所以最后一天将保持不变,
到明年2月。由于2月的天数总是在28到29天之间,因此再加上31天,这个月就过去了,结果是3月2日
$date=新的日期时间(“2020-04-30”);
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-05-30 |增加30天。
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-06-30 |增加31天。
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-07-30 |增加30天。
// ...
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2021-01-30 |增加31天
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2021-03-02 |增加了31天(因为1月有31天)。
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2021-04-02 |增加了31天(因为新日期是3月2日,这是一个有31天的月份)。
这就是为什么建议从月的第一天开始增加月数,
因为第一个是所有月份的共同点
$date=新日期时间(“2020-01-01”);//2020-01-01
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-02-01 |增加31天
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-03-01 |增加了29天(因为2020年是闰年,yee-haw)。
echo$date->modify(“+1个月”)->格式(“Y-m-d”);//2020-04-01 |增加31天
我假设您正在用php编程。如果是这样,文档表明您将收到所获得的结果
文件明确指出要“小心”
示例#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";
?>
The above example will output:
2001-01-31
2001-03-03
非常感谢。我还可以使用哪个函数将月份添加为日期?您可以使用
date(“Y-m-d”,strotime(+n个月),strotime({date}))
。
$date = new DateTime('now');
$date->modify('last day of this month');
echo $date->format('Y-m-d');