GIDNetwork > Get the date / time difference with PHP
Register
« Setting the "no_adsense_for_me" cookie Submit your web site to GIDNetwork »

Get the date / time difference with PHP

by: admin - May 31, 2005

How do I calculate the difference between 2 time or date values with PHP? This was a question posed by justinhn, a member of GIDForums, today.

It seems like a really popular question, I was so sure there would already be something ready-made out there. Searching the WWW with my favourite search engine, I was a bit surprised that it was clearly not the case -- okay, there were some example codes that do calculate the difference in time values, but they were not quite what I was hoping to find.

Before I paste my custom PHP function to calculate time differences, I need to explain that I have no use for this function myself. A disclaimer like that usually means I am writing it, testing it for a while and then I am done with it. In case you find a bug, I will appreciate it if you let me know, either via the comment link at the bottom of this page or by sending me an email.

Overview: get_time_difference()

array get_time_difference( string start, string end )

The function expects to be given 2 strings representing the start and end values of a time or date. These strings will be converted to Unix timestamps before the function works with them. Unix timestamp is the number of seconds since January 1, 1970 00:00:00 GMT.

The function returns an array that can be described like this:

Generic Code Example:

$diff['days']    = int
$diff['hours']   = int
$diff['minutes'] = int
$diff['seconds'] = int

or returns false on errors.

The custom PHP function: get_time_difference

PHP Code Example:


<?php
/**
 * Function to calculate date or time difference.
 * 
 * Function to calculate date or time difference. Returns an array or
 * false on error.
 *
 * @author       J de Silva                             <giddomains@gmail.com>
 * @copyright    Copyright &copy; 2005, J de Silva
 * @link         http://www.gidnetwork.com/b-16.html    Get the date / time difference with PHP
 * @param        string                                 $start
 * @param        string                                 $end
 * @return       array
 */
function get_time_difference$start$end )
{
    $uts['start']      =    strtotime$start );
    $uts['end']        =    strtotime$end );
    if( $uts['start']!==-&& $uts['end']!==-)
    {
        if( $uts['end'] >= $uts['start'] )
        {
            $diff    =    $uts['end'] - $uts['start'];
            if( $days=intval((floor($diff/86400))) )
                $diff $diff 86400;
            if( $hours=intval((floor($diff/3600))) )
                $diff $diff 3600;
            if( $minutes=intval((floor($diff/60))) )
                $diff $diff 60;
            $diff    =    intval$diff );            
            return( array('days'=>$days'hours'=>$hours'minutes'=>$minutes'seconds'=>$diff) );
        }
        else
        {
            trigger_error"Ending date/time is earlier than the start date/time"E_USER_WARNING );
        }
    }
    else
    {
        trigger_error"Invalid date/time data detected"E_USER_WARNING );
    }
    return( false );
}
\?>

Example PHP script using "get_time_difference"

Using justinhn's example, here is how you could use this function to get the time difference.

PHP Code Example:


<?php
// a START time value
$start '09:00';
// an END time value
$end   '10:30';

// what is the time difference between $end and $start?
if( $diff=@get_time_difference($start$end) )
{
  echo "Hours: " .
       sprintf'%02d:%02d'$diff['hours'], $diff['minutes'] );
}
else
{
  echo "Hours: Error";
}

\?>

The example code will result in this being output:

Generic Code Example:

Hours: 01:30
Would you like to comment? This story has been viewed 153,338 times.
« Setting the "no_adsense_for_me" cookie Submit your web site to GIDNetwork »

__top__

Copyright © GIDNetwork™ 2001 - 2024

Another website by J de Silva

Page generated in : 0.00629 sec.