Php 两天之间的天数/周数是否正确?

Php 两天之间的天数/周数是否正确?,php,Php,我已经创建了一个函数来计算两个日期之间的天数和周数,在下面的示例中,35天正好是5周,但是函数返回的值刚好低于4.8571428571429-除法正在消除剩余部分并在4出来 我可以使用ceil函数将其四舍五入到5,但这对所有日期都是安全的方法吗?还是有更好的方法 $date1 = new DateTime('2015-02-23'); $date2 = new DateTime('2015-03-29'); $diff = $date2->diff($date1)

我已经创建了一个函数来计算两个日期之间的天数和周数,在下面的示例中,35天正好是5周,但是函数返回的值刚好低于4.8571428571429-除法正在消除剩余部分并在4出来

我可以使用ceil函数将其四舍五入到5,但这对所有日期都是安全的方法吗?还是有更好的方法

    $date1 = new DateTime('2015-02-23');
    $date2 = new DateTime('2015-03-29');

    $diff = $date2->diff($date1)->format("%a");

    $weeks = $diff / 7;

    return $weeks;

将一天添加到$date2

$date1 = new DateTime('2015-02-23');
$date2 = new DateTime('2015-03-29');
$date2->add(new DateInterval('P1D'));

$diff = $date2->diff($date1)->format("%a");

$weeks = $diff / 7;

return $weeks;
但是,您仍然没有与原始日期相差整整一周的时间

$date2->add(new DateInterval('P1D'));
在$date2初始化后使用此行

为什么会这样? 如果你算一下,你现在有34天:从23-02 0:00到29-03 0:00


如果你想把最后一天也算上(有35天),你需要多加一天。

要进行四舍五入:
四舍五入(“4.8571428571429”,0,PHP四舍五入半)这可能与包含/排除范围的概念有关。你得到的答案实际上是34/7。这意味着diff()不包括一端的边界日期。try Round[link]这两者之间的差异是32天,而不是整整5周。对于非整周分割,您的算法应该如何运行…?我希望您知道,在2015-02-23和2015-03-27之间,时间少于35天?这看起来像是一个报复性的DV,所以+1。谢谢,这似乎可行,但仍然感到困惑,我算错了,从2月23日到3月29日,我精确地计算了5周,也就是35天。你从午夜算到午夜。如果你从星期一数到星期二,你将有一天,因为你只数到星期二的开始,而不是结束。所以最后一天(3月29日星期日)不包括在内,所以你需要多加一天。谢谢你的解释