将时间分配为2小时间隔(带偏移)

时间:2018-06-20 13:24:42

标签: php datetime

这是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);
}

1 个答案:

答案 0 :(得分:1)

我认为这对您有用。这将以24小时制舍入到最接近的奇数小时。

请注意,我切换了html元素,而我只是在命令行中的单个php脚本中运行它。另外,我还添加了一些用于测试的日期字符串。

System

这应该产生以下结果:

ReparsePoint