下面我的php代码应该创建以下日期+次的列表。
// your code goes here
$maxdays = 1;
for($daynumber=0;$daynumber<$maxdays;$daynumber++){
$currentdayval = "+".(string)($daynumber-$maxdays)." days";
$minutes=0;
for($quarter=0;$quarter<24*4;$quarter++){
$minutes += $quarter*15;
$currentminutesval = $minutes." minutes";
$date_sql = date("Y-m-d H:i:s",strtotime($currentdayval." + ".$currentminutesval)); //current date
echo $date_sql. "\n";
}//for $quarter
}//for $daynr
但是下面的输出显示并非每个日期/时间都跟随上一个日期/时间后的15分钟。不确定我的代码出错的地方(?)
2014-06-26 12:44:15
2014-06-26 12:59:15
2014-06-26 13:29:15
2014-06-26 14:14:15
2014-06-26 15:14:15
2014-06-26 16:29:15
2014-06-26 17:59:15
2014-06-26 19:44:15
2014-06-26 21:44:15
2014-06-26 23:59:15
2014-06-27 02:29:15
2014-06-27 05:14:15
2014-06-27 08:14:15
2014-06-27 11:29:15
答案 0 :(得分:3)
要使代码生效,您需要$minutes
为0,然后是15,然后是30,然后是45 ......
但是因为你正在递增,你将$minutes
设置为0,然后是15 ......然后是45(15 + 30),然后是90(15 + 30 + 45),然后是150(15 + 30) + 45 + 60)...
尝试使用$minutes = $quarter * 15;
代替+=
答案 1 :(得分:3)
这是一种比您当前的解决方案更清晰的替代方法,可以避免像您一样的潜在日期数学问题:
$start = new DateTime();
$finish = new DateTime("+{maxdays} days");
$interval = new DateInterval('PT15M');
$period = new DatePeriod($start, $interval, $finish);
foreach ($period as $date) {
printf("%s\n<br>", $date->format('Y-m-d H:i:s'));
}
它会创建您的开始和结束日期/时间以及15分钟的间隔。然后使用DatePeriod循环遍历它们并输出日期和时间。所有日期数学都是由PHP完成的。
答案 2 :(得分:0)
尝试替换
$minutes += $quarter*15;
通过
$minutes += 15;