Solved

ebay style countdown php function

Posted on 2009-07-09
3
348 Views
Last Modified: 2013-12-13
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
Comment
Question by:cookiejest
3 Comments
 
LVL 11

Accepted Solution

by:
BrianMM earned 250 total points
Comment Utility
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
 
LVL 9

Assisted Solution

by:xBellox
xBellox earned 250 total points
Comment Utility
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
 

Author Closing Comment

by:cookiejest
Comment Utility
thanks both solutions were good!
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Popularity Can Be Measured Sometimes we deal with questions of popularity, and we need a way to collect opinions from our clients.  This article shows a simple teaching example of how we might elect a favorite color by letting our clients vote for …
These days socially coordinated efforts have turned into a critical requirement for enterprises.
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now