PHP date calculation

前端 未结 11 1577
不知归路
不知归路 2021-01-01 08:19

What is the best (date format independent way) in PHP to calculate difference in days between two dates in specified format.

I tried the following function:

相关标签:
11条回答
  • 2021-01-01 08:51

    The Zend Framework has the class Zend_Date for dealing with "date math". It works around system specific timestamp limits by using the BCMath extension, or if that's not available limits the timestamps by max float value for your system.

    // example printing difference in days
    require('Zend/Date.php');
    
    $date1 = new Zend_Date();
    $date1->set(2, Zend_Date::MONTH);
    $date1->set(27, Zend_Date::DAY);
    $date1->set(2008, Zend_Date::YEAR);
    
    $date2 = new Zend_Date();
    $date2->set(3, Zend_Date::MONTH);
    $date2->set(3, Zend_Date::DAY);
    $date2->set(2008, Zend_Date::YEAR);
    
    echo ($date2->getTimestamp() - $date1->getTimestamp()) / (3600*24);
    
    0 讨论(0)
  • 2021-01-01 08:54

    PHP 5.2 introduces the DateTime and DateInterval classes which makes this easy:

    function get_date_offset($start_date, $end_date)
    {
        $start_time = new DateTime($start_date);
        $end_time   = new DateTime($end_date);
        $interval   = $end_time->diff($start_time);
        return $interval->format('%a days');
    }
    
    0 讨论(0)
  • 2021-01-01 08:56

    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

    0 讨论(0)
  • 2021-01-01 09:04

    I'm not sure what is considered best, since there is no built-in function in PHP for doing this, but some people have used gregoriantojd(), for example in this forum post.

    0 讨论(0)
  • 2021-01-01 09:08

    gregoriantojd() gives the same results as using strtotime(), see this blogpost for how to do it:

    http://www.phpro.org/examples/Calculate-Age-With-PHP.html

    0 讨论(0)
  • 2021-01-01 09:11

    The problem with PHP is that it doesn't have a definite DateTime type. You can use a Unix timestamp, or the built-in DateTime class, but they are pretty limited in their functionality. I expect that there should be some 3rd party classes with more extensive support for date-time calculations, but I haven't looked for it.

    Using Unix timestamps for date (not time) calculations is also tricky. You'd have to discard the time part, but simply resetting to 00:00 is not safe because of daylight savings time (DST). DST has the effect that there are two days every year that don't have exactly 24 hours. Thus, when adding/subtracting dates you might end up with a value that does not divide evenly with 3600*24.

    I'd suggest looking for some 3rd party class that has proper support for all this stuff. Date/Time calculations are awesome in their ugliness. :P

    0 讨论(0)
提交回复
热议问题