2017-06-14 52 views
-1

我遇到了麻烦“周”在日期时间:: DIFF功能DateTime :: diff - 如何获取周数?

这里是我的代码:

$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从谷歌单位转换器是精确的),如果今天开始日期和时间之间的差异大于4周,它应该输出“1个星期一th“等。

+0

您可以从'diff()'返回的DateInterval中获得天('d'),也许只需乘以7得到几周? –

回答

1

码(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 
1

计算天数,然后除以7周。因为一周有7天

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

: 试试这个代码:

$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'); 
    } 
+0

工作!感谢代码。我只是修改了一些东西 – Kaitenz

+0

其他人请接受 – Rahul

-1

,你可以这样做是为了得到周,然后使病情。