PHP Function to calculate time remaining

pradeep's Avatar author of PHP Function to calculate time remaining
This is an article on PHP Function to calculate time remaining in PHP.
Many times it is required for us to calculate the time remaining and display it in a very understandable format like days,weeks,hours etc.
Here is a function i wrote to do the same.

PHP Code:
//FUNCTION FOR TIME LEFT
 
function time_left($integer)
 { 
 
     
$seconds=$integer
 
     if (
$seconds/60 >=1
 
     { 
 
     
$minutes=floor($seconds/60); 
 
     if (
$minutes/60 >= 1
 
     { 
# Hours 
 
     
$hours=floor($minutes/60); 
 
     if (
$hours/24 >= 1
 
     { 
#days 
 
     
$days=floor($hours/24); 
 
     if (
$days/>=1
 
     { 
#weeks 
 
     
$weeks=floor($days/7); 
 
     if (
$weeks>=2$return="$weeks Weeks"
 
     else 
$return="$weeks Week"
 
     } 
#end of weeks 
 
     
$days=$days-(floor($days/7))*7
 
     if (
$weeks>=&& $days >=1$return="$return, "
 
     if (
$days >=2$return="$return $days days";
 
     if (
$days ==1$return="$return $days day";
 
     } 
#end of days
 
     
$hours=$hours-(floor($hours/24))*24
 
     if (
$days>=&& $hours >=1$return="$return, "
 
     if (
$hours >=2$return="$return $hours hours";
 
     if (
$hours ==1$return="$return $hours hour";
 
     } 
#end of Hours
 
     
$minutes=$minutes-(floor($minutes/60))*60
 
     if (
$hours>=&& $minutes >=1$return="$return, "
 
     if (
$minutes >=2$return="$return $minutes minutes";
 
     if (
$minutes ==1$return="$return $minutes minute";
 
     } 
#end of minutes 
 
     
$seconds=$integer-(floor($integer/60))*60
 
     if (
$minutes>=&& $seconds >=1$return="$return, "
 
     if (
$seconds >=2$return="$return $seconds seconds";
 
     if (
$seconds ==1$return="$return $seconds second";
 
     
$return="$return."
 
     return 
$return
 
 }
 
 
/* Returns a string of the amount of time the integer (in seconds) refers
  to. 
  
  $timeleft=time_left(86400); 
  
  $timeleft='1 day'. 
  
  Will not return anything higher than weeks. False if $integer=0 or fails. 
  
  */ 
Enjoy.
like this
Abdallah's Avatar, Join Date: Jan 2007
Newbie Member
thank you very much , really very nice
lothar86's Avatar, Join Date: Aug 2012
Newbie Member
Thank you for this very useful piece of code. I had to make 2 small adjustments resulting from the php settings of my server.

PHP Code:
/**
 * FUNCTION FOR TIME LEFT
 * Returns a string of the amount of time the integer (in seconds) refers to.
 * $timeleft = time_left(86400);
 * $timeleft = '1 day';
 * Will not return anything higher than weeks. False if $integer=0 or fails. 
 * @author pradeep
 */
function time_left($integer)

    
$seconds=$integer

    if (
$seconds/60 >=1
    { 
        
$minutes=floor($seconds/60); 
        if (
$minutes/60 >= 1
        { 
# Hours 
            
$hours=floor($minutes/60); 
            if (
$hours/24 >= 1
            { 
#days 
                
$days=floor($hours/24);                 
                
$weeks=floor($days/7);#moved here form "if ($days/7 >=1)"statement
                
                
if ($days/>=1
                { 
#weeks 
                    
if ($weeks>=2$return="$weeks Weeks"
                    else 
$return="$weeks Week"

                } 
#end of weeks

                
$days=$days-(floor($days/7))*7;                 
                
$return="";#added
                
if ($weeks>=&& $days >=1$return="$return, "
                if (
$days >=2$return="$return $days days";
                if (
$days ==1$return="$return $days day";

            } 
#end of days

            
$hours=$hours-(floor($hours/24))*24
            if (
$days>=&& $hours >=1$return="$return, "
            if (
$hours >=2$return="$return $hours hours";
            if (
$hours ==1$return="$return $hours hour";

        } 
#end of Hours

        
$minutes=$minutes-(floor($minutes/60))*60
        if (
$hours>=&& $minutes >=1$return="$return, "
        if (
$minutes >=2$return="$return $minutes minutes";
        if (
$minutes ==1$return="$return $minutes minute";

    } 
#end of minutes 

    
$seconds=$integer-(floor($integer/60))*60
    if (
$minutes>=&& $seconds >=1$return="$return, "
    if (
$seconds >=2$return="$return $seconds seconds";
    if (
$seconds ==1$return="$return $seconds second";

    
$return="$return."
    return 
$return;

like this