如果
$_POST['SelectedDate1'] = 2013/08/05
和
$_POST['SelectedDate2'] = 2013/08/07
如何设置一个变量,让我回到天数( 2,在这种情况下),然后将其作为结果回显
我正在寻找可以涵盖任何日历组合的解决方案。
php中是否有任何全局功能。
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分: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;
}
它以数组形式返回一个日期范围,然后你只需得到计数
答案 3 :(得分:0)
DateTime类:
$date1 = new DateTime('2013/08/05');
$date2 = new DateTime('2013/08/07');
$diff = $date1->diff($date2);
echo $diff->days;