Page 1 of 1

How many weeks and days left?

Posted: Sun Aug 03, 2008 8:55 pm
by Mr Tech
I can't get my head around this... How do I display how many weeks and days left when I have a begin date and an end date?

Here is my really messy code:

Code: Select all

if ($target_date != '0000-00-00' && $target_date != '') {
 
    $today_time = time();
    $end_time = strtotime($target_date);
 
    $days_left = ($end_time - $today_time) / 86400;
    $days_left = round($days_left);
 
    if ($days_left < 0) {
        $remaining =  '<span class="days_overdue">' . $days_left . ' days overdue!</span>';
    } else if ($days_left == 0) {
        $remaining =  '<span class="days_3">Due today!</span>';
    } else if ($days_left < 3) {
        $remaining =  '<span class="days_3">' . $days_left . ' days remaining</span>';
    } else if ($days_left < 7) {
        $remaining =  '<span class="days_6">' . $days_left . ' days remaining</span>';
    } else if ($days_left == 7) {
        $remaining =  '1 week remaining';
    } else if ($days_left > 7 && $days_left < 14) {
        $days_left_week = $days_left - 7;
        $remaining =  '1 week, ' . $days_left_week . ' days remaining';
    } else if ($days_left > 14) {
        $days_left_weeks = $days_left / 7;
        $remaining =  round($days_left_weeks) . ' weeks remaining';
    } else {
        $remaining =  'Days remaining unknown';
    }
}
As you can see it is really messy. Everything works fine however I want the last part to display how many weeks and days are left.

Code: Select all

    } else if ($days_left > 14) {
        $days_left_weeks = $days_left / 7;
        $remaining =  round($days_left_weeks) . ' weeks, ???? days remaining';
 
It's probably simple maths but I can't work it out.

Also, is there one line of code I can use instead of all this code I have above that does pretty much the same thing?

Re: How many weeks and days left?

Posted: Mon Aug 04, 2008 6:19 am
by jayshields
Did you conduct a search before you made your post?

Re: How many weeks and days left?

Posted: Mon Aug 04, 2008 8:21 am
by dajawu
Here is an easy way to get it done.

Code: Select all

 
$weeks = (int) ($days_left / 7) ;
$days = $days_left % 7;
echo "$weeks weeks and $days days left!";
 
This will work for any number too. $days_left can be 0 to anything.

Re: How many weeks and days left?

Posted: Mon Aug 04, 2008 6:00 pm
by Mr Tech
Thanks so much. That code is perfect :)