Kaitenz Kaitenz -4 years ago 95
PHP Question

DateTime::diff - how to get week number?

I'm having trouble getting "weeks" in DateTime::diff function

Here's my code:

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

It worked if I'm going to get the "month" count, but I want to get the weeks before turning it into a month:

We have 4 weeks in a month (4.34524 to be exact from Google Unit Converter), if the start date and the date today exceeded in 4 weeks, it should output "1 month" and so on..

Please help me figuring this out. Thanks.

Answer Source

Code (Demo):

$date1 = new DateTime("2017-06-1");
$date2 = new DateTime("2017-06-15");
$interval = $date1->diff($date2);
if($interval->m>0){  // check if >= 1 month
    echo "{$interval->m} month",($interval->m>1?'s':'');
    $weeks=floor($interval->days/7);  // if not yet 1 month, calc weeks
    echo "$weeks week",$weeks!=1?'s':'';
// output: 2 weeks
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download