我想创建一个从00:00到23:55的所有5分钟的数组
在这个论坛上我找到了:
$minutes = 5;
$endtime = new DateTime('2012-01-01 09:00');
//modified the start value to get something _before_ the endtime:
$time = new DateTime('2012-01-01 00:00');
$interval = new DateInterval('PT' . $minutes . 'M');
while($time < $endtime){
$time->add($interval);
echo $time->format('Y-m-d H:i');
}
如何更改此设置以便输出可以与json一起使用?
例如: -
$ aArray = {“00:00”:“00:00”,“00:05”:“00:05”,......“23:55”:“23:55”} < / p>
我的问题不是创建json,而是创建没有日期部分的小时/分钟列表。
答案 0 :(得分:5)
你几乎就在那里,只是一点点调整,并且Terje建议使用H:i。也许是这样的:
$startTime = new \DateTime('2010-01-01 00:00');
$endTime = new \DateTime('2010-01-01 23:55');
$timeStep = 5;
$timeArray = array();
while($startTime <= $endTime)
{
$timeArray[] = $startTime->format('H:i');
$startTime->add(new \DateInterval('PT'.$timeStep.'M'));
}
echo json_encode($timeArray);
答案 1 :(得分:4)
DateTime::format
的参数控制选择这样的字段:
仅获取小时和分钟:使用'H:i'
作为格式字符串。
有关更多格式选项:请参阅http://www.php.net/manual/en/function.date.php
如果你不能使用DateTime函数,我会像这样生成数组:
$times = array();
for ($h = 0; $h < 24; $h++){
for ($m = 0; $m < 60 ; $m += 5){
$time = sprintf('%02d:%02d', $h, $m);
$times["'$time'"] = "'$time'";
}
}
答案 2 :(得分:1)
尝试:
echo json_encode($Var);
这应该可以解决问题..请在此处查看手册:http://www.php.net/manual/en/function.json-encode.php
答案 3 :(得分:0)
我知道为时已晚,但以下方法可能对某人有所帮助
$step = 5;
$periods = new DatePeriod(
new DateTime("2021-01-01 00:00:00"),
new DateInterval('PT' . $step . 'M'),
new DateTime("2021-01-01 23:59:00")
);
foreach($periods as $d){
echo $d->format("H:i");
}
答案 4 :(得分:-1)
首先要更新我的php版本以使用这些DateTime类:( 所以现在我把它写出来并使用15分钟间隔,如:
function json_select_starttijd_ronde()
{
$jsonStarttijd_ronde = array();
$jsonStarttijd_ronde['00:00'] = '00:00';
$jsonStarttijd_ronde['00:15'] = '00:15';
// etcetera
$jsonStarttijd_ronde['23:45'] = '23:45';
return $jsonStarttijd_ronde;
}