简体   繁体   中英

PHP: Retrieve number of days from Calendar Range Period

if

$_POST['SelectedDate1'] = 2013/08/05 

and

$_POST['SelectedDate2'] = 2013/08/07

How can I set a variable which gives me back the number of days ( 2 in this case ) to then echo it as result

I'm looking for a solution that can cover any calendar combination.

Is there any global function in php.

I think, in the following Documentation on PHP.net is exactly what you're trying to do. http://nl3.php.net/manual/en/datetime.diff.php

<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
?>

In your case:

<?php

$first = new DateTime($_POST['SelectedDate1']);
$second = new DateTime($_POST['SelectedDate2']);
$passed = $first->diff($second);

var_dump($passed->format('%R%a days'));

For more formats, next to %R%a , see: http://nl3.php.net/manual/en/function.date.php

<?php
$days = (strtotime($_POST['SelectedDate2']) - strtotime($_POST['SelectedDate1'])) / 86400;

example:

<?php
$_POST['SelectedDate1'] = '2013/08/05' ;
$_POST['SelectedDate2'] = '2013/08/07' ;
$days = (strtotime($_POST['SelectedDate2']) - strtotime($_POST['SelectedDate1'])) / 86400;

var_export($days);
// output: 2

I use this function that I've found on this forum but I don't remember where :

function createDateRangeArray($start, $end) {
    // Modified by JJ Geewax 
    $range = array();
    if (is_string($start) === true) $start = strtotime($start);
    if (is_string($end) === true ) $end = strtotime($end);
    if ($start > $end) return createDateRangeArray($end, $start);
    do {
    $range[] = date('Y-m-d', $start);
    $start = strtotime("+ 1 day", $start);
    }
    while($start <= $end);
    return $range;
}

it returns a range of date as an array, then you just have to get the count

DateTime class is created for this:

    $date1 = new DateTime('2013/08/05');
    $date2 = new DateTime('2013/08/07');
    $diff = $date1->diff($date2);
    echo $diff->days;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM