PHP-计算两个日期之间的周数

Tim*_*m M 1 php date strtotime

我正在尝试计算两个日期之间的周数。下面的代码有 3 周的结果。然而,确实是4个星期。为什么计算错误以及解决方案是什么?

我很想知道为什么这个特定的代码不起作用,但也想知道是否有更好的方法。

我正在运行 PHP 7.2 版本。下面是我正在使用的代码:

$HowManyWeeks = date( 'W', strtotime( 2019-04-21 23:59:00 ) ) - date( 'W', strtotime( 2019-03-25 00:00:00 ) );
Run Code Online (Sandbox Code Playgroud)

$HowManyWeeks 的值应为 4,但它显示为 3。

另外,当我在https://phpfiddle.org/尝试该代码时,它给出了以下错误:

Line : 2 -- syntax error, unexpected '23' (T_LNUMBER), expecting ',' or ')'
Run Code Online (Sandbox Code Playgroud)

但在我的服务器上运行时它显示“3”,没有任何错误。

谢谢,

蒂姆

Nic*_*ick 5

您传递的日期strtotime需要用引号引起来。正确答案确实是3,因为两次之间相隔3周6天23小时59分钟。尝试这个:

$HowManyWeeks = date( 'W', strtotime( '2019-04-21 23:59:00' ) ) - date( 'W', strtotime( '2019-03-25 00:00:00' ) );
echo $HowManyWeeks;
Run Code Online (Sandbox Code Playgroud)

正如已经指出的,这仅在同一年的几周内才有效。使用DateTime@MiroslavGlamuzina 答案中的对象更容易,或者您可以简单地将strtotime差异除以 604800(一周秒数);然后,如果需要,您可以将floororceil转换为整数值:

$HowManyWeeks = (strtotime( '2019-04-21 23:59:00' ) - strtotime( '2019-03-25 00:00:00' )) / 604800;
echo $HowManyWeeks;
Run Code Online (Sandbox Code Playgroud)

输出:

3.9939484126984
Run Code Online (Sandbox Code Playgroud)

3v4l.org 上的演示