我正在尝试将时间四舍五入为一整分钟(这是更大的舍入机制的一部分)。在单元测试中,我发现一些奇怪的东西,这种和平的代码:
echo date('Y-m-d H:i:00', strtotime('2018-09-31 19:39:45'));
导致:
2018-10-01 19:39:00
我在做什么错了?
注意:我 WAS 在 2018-10-01
上运行http://sandbox.onlinephpfunctions.com/code/1cb0dd98e9d540616d02ce2d5c00684800af8597
答案 0 :(得分:3)
strtotime()
不验证日期。
如果愿意
echo date('Y-m-d H:i:00', strtotime('2018-02-30 19:39:45'));
输出
2018-03-02 19:39:00
因此,这里的问题是您使用的是“无效”日期,而PHP汇总了几秒钟。
因此,september 31表示9月30 + 24小时(以秒为单位)。当您运行date()
时,将获得以秒为单位的日期,并向您显示有效日期(十月初)。