Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 376
  • Last Modified:

ebay style countdown php function

Hi there, i am looking for a prebuilt php function that displays the time left or time since a mysql time that is passed to it. In terms of days, hours and mins only.

for example a time 2 weeks 4 hours and 32 mins in the future would output:

14d 4h 32m

and so on... This should be pretty simple but im restrained for time so any prebuilt functions provided would be great!




that would be great thanks!
0
cookiejest
Asked:
cookiejest
2 Solutions
 
BrianMMCommented:
Try this:
$diff = Timesince(strtotime($MySQL));
 
<?php
function Timesince($original) {  
     // array of time period chunks  
     $chunks = array(  
     array(60 * 60 * 24 * 365 , 'year'),  
     array(60 * 60 * 24 * 30 , 'month'),  
     array(60 * 60 * 24 * 7, 'week'),  
     array(60 * 60 * 24 , 'day'),  
     array(60 * 60 , 'hour'),  
     array(60 , 'min'),  
     array(1 , 'sec'),  
     );  
   
     $today = time(); /* Current unix time  */  
     $since = $today - $original;  
   
     // $j saves performing the count function each time around the loop  
     for ($i = 0, $j = count($chunks); $i < $j; $i++) {  
   
     $seconds = $chunks[$i][0];  
     $name = $chunks[$i][1];  
   
     // finding the biggest chunk (if the chunk fits, break)  
     if (($count = floor($since / $seconds)) != 0) {  
         break;  
     }  
     }  
   
     $print = ($count == 1) ? '1 '.$name : "$count {$name}s";  
   
     if ($i + 1 < $j) {  
     // now getting the second item  
     $seconds2 = $chunks[$i + 1][0];  
     $name2 = $chunks[$i + 1][1];  
   
     // add second item if its greater than 0  
     if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) {  
         $print .= ($count2 == 1) ? ', 1 '.$name2 : " $count2 {$name2}s";  
     }  
     }  
     return $print;  
 }  
?>

Open in new window

0
 
xBelloxCommented:
If you want in days, hours, minutes and secons try this (you can erase the seconds part if you want):

<?
     function timeBetween($start_date,$end_date)  
     {  
         $diff = $end_date-$start_date;  
         $seconds = 0;  
         $hours   = 0;  
         $minutes = 0;  
   
         if($diff % 86400 <= 0){$days = $diff / 86400;}  // 86,400 seconds in a day  
         if($diff % 86400 > 0)  
         {  
             $rest = ($diff % 86400);  
             $days = ($diff - $rest) / 86400;  
             if($rest % 3600 > 0)  
             {  
                 $rest1 = ($rest % 3600);  
                 $hours = ($rest - $rest1) / 3600;  
                 if($rest1 % 60 > 0)  
                 {  
                     $rest2 = ($rest1 % 60);  
                 $minutes = ($rest1 - $rest2) / 60;  
                 $seconds = $rest2;  
                 }  
                 else{$minutes = $rest1 / 60;}  
             }  
             else{$hours = $rest / 3600;}  
         }  
   
         if($days > 0){$days = $days.' days, ';}  
         else{$days = false;}  
         if($hours > 0){$hours = $hours.' hours, ';}  
         else{$hours = false;}  
         if($minutes > 0){$minutes = $minutes.' minutes, ';}  
         else{$minutes = false;}  
         $seconds = $seconds.' seconds'; // always be at least one second  
   
         return $days.''.$hours.''.$minutes.''.$seconds;  
     }  
 
	 
	 $date_now = date("U");
	 $date_future = date("U", strtotime("07/10/2009 09:30:00"));
	 
	 echo timeBetween($date_now, $date_future).'';
	 
?>

Open in new window

0
 
cookiejestAuthor Commented:
thanks both solutions were good!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now