日期时间::d iff - 如何获取周数



我在 DateTime::d iff 函数中获取"周"时遇到问题

这是我的代码:

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

如果我要获得"月"计数,它有效,但我想在将其变成一个月之前获得几周:

我们一个月有 4 周(确切地说是 4.34524 来自 Google 单位转换器(,如果开始日期和今天的日期之间的差异超过 4 周,它应该输出"1 个月",依此类推。

代码(演示(:

$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

计算天数,然后除以 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');
  }

你可以这样做来获得周数,然后提出条件:

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

因为一周有7天。

最新更新