1

如果

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

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

如何设置一个变量,让我返回天数(在这种情况下为 2),然后将其作为结果回显

我正在寻找一种可以涵盖任何日历组合的解决方案。

php.ini 中有没有全局函数?

4

4 回答 4

6

我认为,在 PHP.net 上的以下文档中正是您想要做的。 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');
?>

在你的情况下:

<?php

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

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

有关更多格式,%R%a请参阅: http: //nl3.php.net/manual/en/function.date.php

于 2013-08-05T14:53:04.273 回答
4
<?php
$days = (strtotime($_POST['SelectedDate2']) - strtotime($_POST['SelectedDate1'])) / 86400;

例子:

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

var_export($days);
// output: 2
于 2013-08-05T14:51:08.690 回答
0

我使用我在这个论坛上找到的这个功能,但我不记得在哪里:

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;
}

它返回一个日期范围作为一个数组,然后你只需要得到计数

于 2013-08-05T14:54:30.983 回答
0

为此创建了DateTime类:

    $date1 = new DateTime('2013/08/05');
    $date2 = new DateTime('2013/08/07');
    $diff = $date1->diff($date2);
    echo $diff->days;
于 2013-08-05T14:57:44.700 回答