2013-04-08 41 views
2

我想创建一个从00:00所有恒温5分钟时间数组23:55创建阵列timelist从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“}

我的问题不是在创建JSON,而是在创建没有日期部分的小时/分钟列表。

回答

-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; 

} 
+1

然后,我会用一对嵌套循环来生成数组内容。请参阅我更新的答案。 – 2013-04-08 21:20:39

4

DateTime::format的参数controlls场这样的选择:

  • Y:年份
  • m:月
  • d:d唉
  • H:小时
  • 我:分

要获得唯一的小时和分钟:使用'H:i'作为格式字符串。

更多格式选项:参见http://www.php.net/manual/en/function.date.php

如果你不能使用日期时间函数,我会产生数组是这样的:

$times = array(); 
for ($h = 0; $h < 24; $h++){ 
    for ($m = 0; $m < 60 ; $m += 5){ 
    $time = sprintf('%02d:%02d', $h, $m); 
    $times["'$time'"] = "'$time'"; 
    } 
} 
5

你是的allmost那里,只是小tweek正如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);