DateTime::diff - 如何获取周数?

DateTime::diff - how to get week number?

我在 DateTime::diff 函数

中获取 "weeks" 时遇到问题

这是我的代码:

$date1 = new DateTime("2017-05-14");
$date2 = new DateTime("2017-06-14");
$interval = $date1->diff($date2);
echo $interval->m.' '.($interval->m > 1 ? 'months' : 'month');

如果我要获得 "month" 计数,它会起作用,但我想在将其变成一个月之前获得周数:

我们一个月有 4 周(根据 Google 单位转换器 准确地说是 4.34524),如果开始日期和今天的日期之间的差异超过 4 周,它应该输出“1个月”等等..

计算天数,然后除以 7 得到一周。 试试这个代码:

$date1 = new DateTime("2017-05-14");
$date2 = new DateTime("2017-06-14");
$interval = $date1->diff($date2);


  $week = floor($date1->diff($date2)->days/7);
  echo $week;
  if($week > 4)
  {
      echo $interval->m.' '.($interval->m > 1 ? 'months' : 'month');
  }

代码(Demo):

$date1 = new DateTime("2017-06-1");
$date2 = new DateTime("2017-06-15");
$interval = $date1->diff($date2);
//var_export($interval);
if($interval->m>0){  // check if >= 1 month
    echo "{$interval->m} month",($interval->m>1?'s':'');
}else{
    $weeks=floor($interval->days/7);  // if not yet 1 month, calc weeks
    echo "$weeks week",$weeks!=1?'s':'';
}
// output: 2 weeks

你可以这样做得到几周,然后使条件:

$daysInAweek = 7;
$weeks = ($interval->days)/$daysInAweek;
if($weeks >= 4) {
  echo 'is a month';
}

因为一周有7天