两个灵活日期之间的周数 - PHP

时间:2014-12-15 13:32:25

标签: php

我一直在查看与此问题相似的所有先前问题,不幸的是,这些问题并不适用于我。

我想要获得两个日期之间的周数。

$result = mysqli_query($con,"SELECT * FROM `test` WHERE  `DateofTest` BETWEEN  '" .    
$startDate . "' AND  '" . $endDate . "' ") or die ("Error: ".mysqli_error($con));

$startDate = $_POST['start'];
$endDate = $POST['end']; 

假设我的开始日期是2014年12月1日,结束日期是2014年12月31日,那么为期4周。

这是我的代码

   $startDate ="2014-12-01";
   $endDate ="2014-12-31";
   $days=($startDate - $endDate);
     echo $days;
   $weeks=($days / 7);
   echo $weeks;

我每天和每周得到0结果。

请任何想法。

由于

4 个答案:

答案 0 :(得分:4)

您无法计算字符串。您需要将它们转换为日期。 你可以这样做:

function get_number_of_weeks($startDate, $endDate) {
    // use strtotime and substract the end date from the start date, not the otherway around
    $days = strtotime($endDate) - strtotime($startDate);

    // devide by seconds / hours and weeks
    $weeks = $days / 3600 / 24 / 7;
    // floor the amount of weeks.
    return floor($weeks);
}

echo get_number_of_weeks("2014-12-01", "2014-12-31");

答案 1 :(得分:4)

使用日期时间对象的这样的东西将起作用

$d1 = new DateTime("2014-12-01");
$d2 = new DateTime("2014-12-31");
$difference_in_days = $d1->diff($d2)->days;

echo "Diff in Weeks = ".$difference_in_days/7;

答案 2 :(得分:1)

您无法比较日期字符串并期望获得差异。 您应该使用DateTime类来比较两个日期时间值:

$startDate = new DateTime("2014-12-01");
$endDate = new DateTime("2014-12-31");
$diff = $startDate->diff( $endDate )->format('%d');
$weeks = floor($diff/7);

format方法可以通过多种方式返回差异,例如年/月/天/小时/分钟/秒。更多here

答案 3 :(得分:0)

试试这个..

    <?php

    $d1 ="2014-12-01";
       $d2 ="2014-12-31";

    $diffweek = abs(strtotime($d1) - strtotime($d2)) / 604800;
    echo round($diffweek); or echo intval($diffweek);
  ?>