1

我试图用foreach loop, 每分钟设置一个变量。我有这个代码:

$dhit = 2013-02-07 04:21:01;
$dnow= 2013-02-07 10:21:01;

$begin = new DateTime( $dhit );
$end = new DateTime( $dnow );

$interval = DateInterval::createFromDateString( '1 minute' );
$period = new DatePeriod($begin, $interval, $end);
$a = 0;
foreach ( $period as $dt ) {
  $a+=1;
  echo $a; 
}

如果$dhit至少 24 小时(2013-02-06 04:21:01),但如果$dhit具有相同的日期(同一天,即 2013-02-07),则效果很好$dnow

我做错了什么?

4

2 回答 2

3

这对我有用,我怀疑你的系统时间可能没有正确设置。

你得到什么错误?

这是我做的测试,它按预期打印了 1-360

<?php

$dhit = '2013-02-07 04:21:01';
$dnow= '2013-02-07 10:21:01';

$begin = new DateTime( $dhit );
$end = new DateTime( $dnow );

$interval = DateInterval::createFromDateString( '1 minute' );
$period = new DatePeriod($begin, $interval, $end);
$a = 0;
foreach ( $period as $dt ) {
  $a+=1;
  print "$a\n"; 
}
于 2013-02-07T09:51:59.780 回答
1

这对我来说很好,打印 123456。你忘了在你的日期周围加上引号。

$dhit = '2013-02-07 10:15:01';
$dnow= '2013-02-07 10:21:01';

$begin = new DateTime( $dhit );
$end = new DateTime( $dnow );

$interval = DateInterval::createFromDateString( '1 minute' );
$period = new DatePeriod($begin, $interval, $end);
$a = 0;
foreach ( $period as $dt ) {
  $a+=1;
  echo $a; //output 123456
}
于 2013-02-07T09:44:21.197 回答