这是json中的列表时间:
$datatest = '{
"dt": [
"2018-06-10T00:16:02.200Z",
"2018-06-11T03:35:10.629Z",
"2018-06-11T04:20:58.629Z",
"2018-06-11T05:00:05.171Z",
"2018-06-11T05:49:05.171Z",
"2018-06-11T06:53:55.629Z",
"2018-06-11T06:57:13.708Z"
]
}';
我要的是分配或分配时间,间隔2小时。这是我的php代码:
$data = json_decode($datatest, false);
echo "<table border=\"1\">";
foreach($data->{'dt'} as $time){
echo "<tr>";
echo "<td>".$time;
$time_in_sec = strtotime($time);
echo "==>".$time_in_sec."</td>";
$timeslot = setTimeSlot($time_in_sec);
echo "<td>Rounded down: " . date('Y-m-d\TH:i:s\Z', $timeslot)."</td>";
echo "</tr>";
}
echo "</table>";
function setTimeSlot($timeinseconds){
$seconds = $timeinseconds;
$rounded_seconds = floor($seconds / (2 * 60 * 60)) * (2 * 60 * 60);
return $rounded_seconds;
}
结果如下。我不想要这个输出:
2018-06-10T00:16:02.200Z==>1528589762 Rounded down: 2018-06-10T00:00:00Z 2018-06-11T03:35:10.629Z==>1528688110 Rounded down: 2018-06-11T02:00:00Z 2018-06-11T04:20:58.629Z==>1528690858 Rounded down: 2018-06-11T04:00:00Z 2018-06-11T05:00:05.171Z==>1528693205 Rounded down: 2018-06-11T04:00:00Z 2018-06-11T05:49:05.171Z==>1528696145 Rounded down: 2018-06-11T04:00:00Z 2018-06-11T06:53:55.629Z==>1528700035 Rounded down: 2018-06-11T06:00:00Z 2018-06-11T06:57:13.708Z==>1528700233 Rounded down: 2018-06-11T06:00:00Z
我想修改上面的代码以增加偏移量1小时。我需要将其四舍五入为2小时间隔,以便输出将像这样,而不是从0小时开始。我不知道如何计算偏移量。
取整时间应为:07、09、11、13、15、17、19、21、23、01,... 不应该:08、10、12、14、16、18,...
最后我已经解决了。抱歉,添麻烦了。这是代码。 :
function setTimeSlot($timeinseconds){
$offset = 3600;//1 hours offset
$seconds = $timeinseconds;
$rounded_seconds = floor(($seconds - $offset) / (2 * 60 * 60)) * (2 * 60 * 60);
return ($rounded_seconds + $offset);
}
答案 0 :(得分:1)
我认为这对您有用。这将以24小时制舍入到最接近的奇数小时。
请注意,我切换了html元素,而我只是在命令行中的单个php脚本中运行它。另外,我还添加了一些用于测试的日期字符串。
System
这应该产生以下结果:
ReparsePoint