-1

我有这个脚本,它返回 2 个日期之间的时间范围,但增加了 1 天!

$date_1 = date("Y-m-d g:i:s", strtotime('2013-06-27 12:00:00'));
$date_2 = date("Y-m-d g:i:s", strtotime('2013-06-29 12:00:00'));
$results = array($date_1);
$i = $date_1;
  while ($i <= $date_2) {
    $i = date("Y-m-d g:i:s", strtotime("+1 day", strtotime($i)));// how do I take off here this "+1 day"
    array_push($results, $i);
    echo $i;
}

所以当我echo出去时,$i我得到以下字符串

2013-06-28 2013-06-29 2013-06-30  

当我需要的时候

2013-06-27 2013-06-28 2013-06-29

问题显然是这个“+1 天”,但如果我将它从我的函数中删除,则会出现错误。

如何解决这个问题?

4

4 回答 4

0

尝试改变这个

strtotime("+1 day", strtotime($i))

对此:

strtotime("+0 day", strtotime($i))
于 2013-11-12T17:26:55.230 回答
0

我试过这个:

$date_1 = date("Y-m-d g:i:s", strtotime('2013-06-27 12:00:00'));
$date_2 = date("Y-m-d g:i:s", strtotime('2013-06-29 12:00:00'));
$results = array($date_1);
$i = $date_1;
while ($i <= $date_2) {
    $i = date("Y-m-d g:i:s", strtotime($i));// how do i take off here this "+1 day"                                                    
    array_push($results, $i);
    echo $i . "\n";
    $i = date("Y-m-d g:i:s",strtotime("+1 day", strtotime($i)));
}

并给了我:

2013-06-27 12:00:00
2013-06-28 12:00:00
2013-06-29 12:00:00
于 2013-11-12T17:29:48.377 回答
0

您需要增加变量$i

$date_1 = strtotime('2013-06-27 12:00:00');
$date_2 = strtotime('2013-06-29 12:00:00');
$results = array();
$i = $date_1;
  while ($i <= $date_2) {
    array_push($results, date("Y-m-d g:i:s", $i));
    $i = strtotime('+1 day', $i);
}


print_r($results);
于 2013-11-12T17:31:06.370 回答
0

只是让你知道:

date_default_timezone_set('UTC');
$date_from = '2013-06-27 12:00:00';
$date_interval = '+1 day';
$date_to = '2013-06-29 12:00:00';
$date_range = array_map(function ($date) {
        return $date->format('Y-m-d g:i:s');
    }, iterator_to_array(
        new DatePeriod(new DateTime($date_from),
                       DateInterval::createFromDateString($date_interval),
                       (new DateTime($date_to))->modify('+1 day'))));
var_dump($date_range);

给了我以下内容:

array(3) {
  [0]=>
  string(10) "2013-06-27 12:00:00"
  [1]=>
  string(10) "2013-06-28 12:00:00"
  [2]=>
  string(10) "2013-06-29 12:00:00"
}

PHP 5.3+ 兼容。

于 2013-11-12T18:27:20.487 回答