Finding difference of days between two dates in PHP

Advertisement

Yesterday, my friend Roshan was was struggling to find the days difference between to two dates in PHP. Well, after a while I came up with the solution for him. The date format he’s using was “YYYY-MM-DD”, which is the standard format of date value stored in the MySql database.

Function to find the difference of days between two dates

function daysDifference($endDate, $beginDate)
{

   //explode the date by "-" and storing to array
   $date_parts1=explode("-", $beginDate);
   $date_parts2=explode("-", $endDate);
   //gregoriantojd() Converts a Gregorian date to Julian Day Count
   $start_date=gregoriantojd($date_parts1[1], $date_parts1[2], $date_parts1[0]);
   $end_date=gregoriantojd($date_parts2[1], $date_parts2[2], $date_parts2[0]);
   return $end_date - $start_date;
}

The above function is fairly simple, first of all the dates values in the format “YYYY-MM-DD” is separated into array by using explode() function. The first element of array contains the year, the second element contains the month and the last element contains the day value.

And the most import function in finding the days difference is gregoriantojd(), this function converts a Gregorian date to Julian Day Count. This function takes three parameters- month, day and year.

And in the last line of the function, the difference between the Julian Day count of two dates are calculated and returned.

Example :

<?php
   echo daysDifference('2008-03-12','2008-03-09');
?>

What is the output of the above statement, I don’t think I need to write it down. But, I’m a nice guy and never leave the suspense, it’s 3 :-) .

Popularity: 10% [?]

Enter your email address and get free tutorials, tips and tricks of PHP, Ajax, JavaScript and CSS directly delivered to you email inbox:

Related Posts

» Solving time difference between hosting server and local timezone in PHP
» I’m Sorry !!! But Thank you for the achievement
» Cool out of Office Auto Replies
» Diplomatic statements from Project Mangers

23 Comments on “Finding difference of days between two dates in PHP”

  • val wrote on 28 March, 2008, 4:57

    hi! nice function.. but was just wondering why the function had to convert a Gregorian date to Julian day Count? [sorry.. it's the first time I saw it..]

  • Roshan wrote on 28 March, 2008, 9:04

    dear val..Julian day Count in PHP supports dates ranging from 4714 B.C. to 9999 A.D so I’ve converted the Gregorian date to Julian day Count in this function.

  • val wrote on 2 April, 2008, 7:08

    ah.. i see.. uwkiee.. :) thanks for answering my question..

  • Bill Evans wrote on 19 April, 2008, 12:13

    Hi,
    I have found all of your articles very useful and to the point. Thank you.
    Bill

  • Roshan wrote on 19 April, 2008, 12:21

    Thanks bill for the appreciation…

  • matt wrote on 23 October, 2008, 8:42

    thankyou thankyou thankyou :D

  • vishwa wrote on 19 March, 2009, 11:49

    can u please tell me how to compaire day month and year given two date form two date field……………………! (‘,’)

  • Max wrote on 21 July, 2009, 8:29

    Thanks for the code, it works great! :)

  • vaskar wrote on 27 July, 2009, 5:00

    Thank you excellent function too much helpful

  • Nirmal wrote on 25 August, 2009, 17:54

    I think this is better than aboe proposed solution
    function daysDifference($endDate, $beginDate)
    {
    $beginDate = strtotime($beginDate);
    $endDate = strtotime($endDate);
    $diff = $endDate – $beginDate;
    $diff = ceil($diff / (60*60*24)) ;
    return $diff;
    }

  • search wrote on 24 September, 2009, 0:34

    Thank you. I have been looking around for this function.

  • Patel Dharmendra M wrote on 26 September, 2009, 8:19

    Thanks dear all my friends this example very good for my website

  • XianD6 wrote on 2 December, 2009, 7:44

    Hi Roshan,

    Calculate How Many Days User Has Stayed With The Book Once She Return It).
    I am learning PHP/MySQL, and I am also writting the Library Management
    System to make sure that I practice what I am learning.

    My Problem is:

    I want to capture the date when the library user borrow the book and then
    check that date to see if the book have exceeded the number of days (to
    calculate how many days user has stayed with the book once she return it).
    Please help me how I can do that. I am using mysql as my database.

  • XianD6 wrote on 2 December, 2009, 7:46

    i find your codes very useful,
    thanks in advance…

  • Scott - Php wrote on 6 January, 2010, 6:46

    Hi Roshan, the following page contains a reference to this article. Great information.

    Calculate the difference between two Dates (and time) using Php. The following page provides a range of different methods (7 in total) for performing date / time calculations using Php, to determine the difference in time (hours, munites), days, months or years between two dates.

    See Php Date Time – 7 Methods to Calculate the Difference between 2 dates

  • gogrumogru wrote on 18 March, 2010, 5:59

    Thanks for the scrpt!

  • Pravin wrote on 23 March, 2010, 10:25

    Nice Code Roshan !!
    Thanks.

  • Johnte wrote on 16 May, 2010, 12:15

    Calculating the date difference based on time stamp is most robust way since it takes care off the difference in date and time formats. example

    function GetDateDifference ($Date1,$Date2)
    {
    $ConvertToTimeStamp _Date1 = strtotime($Date1);
    $ConvertToTimeStamp_Date2 = strtotime($Date2);
    $DateDifference = (int)$ConvertToTimeStamp _Date1 – (int)$ConvertToTimeStamp_Date2;
    return round($DateDifference/86400);
    }

  • Dhurv Singh wrote on 2 June, 2010, 13:06

    Not working dude

  • Erwin wrote on 25 June, 2010, 16:47

    Nice code, great job
    ty

  • Eren wrote on 30 June, 2010, 6:21

    Ya this is good solution… But i can’t get the result.

  • dillip wrote on 7 August, 2010, 8:47

    thanks for your script

Trackbacks

  1. PHP Coding School » Blog Archive » php tips [2008-03-18 18:36:28]

Write a Comment

 


Copyright © 2012 Roshan Bhattarai's Blog. All rights reserved.
Powered by WordPress.org, Custom Theme and ComFi.com Calling Card Company.