我一直在查看与此问题相似的所有先前问题,不幸的是,这些问题并不适用于我。
我想要获得两个日期之间的周数。
$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结果。
请任何想法。
由于
答案 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);
?>