我正在尝试获取一个选择框,其中包含从 00:00 到 24:00 的时间增量列表。
时间增量是显示时间的秒数关联数组,如下所示:
1800 => 00:30
然后当有人选择一个日期时,我计划将日期(例如 2016/9/16)转换为秒,然后将他们选择的时间添加到这些秒上以获得他们事件的日期时间。
为此,我生成了这样的时间增量。
public function getIntervals($start_time = '00:00', $end_time = '24:00', $increments = '30')
{
$today = strtotime(date('Y/m/d', time())); // seconds for 2016/9/16
$seconds_start = strtotime(date('Y/m/d', time()) . ' ' . $start_time) - $today;
$seconds_end = strtotime(date('Y/m/d', time()) . ' ' . $end_time) - $today;
while ($seconds_start < $seconds_end) {
$intervals[$seconds_start] = date("H:i", $seconds_start);
$seconds_start = strtotime('+' . $increments . ' minutes', $seconds_start);
}
return $intervals;
}
但是我的时间间隔是一小时。
如果有人选择“2016/9/17 上午 01:00”,则上午 01:00 的秒数值为“0”。
如果我将 '0' 添加到 strtoseconds('2016/9/17') 我将在 00:00' 得到 '2016/9/17 .
我来了,还有一个小时。我认为这是由于我的服务器时间被设置为巴黎 +1 小时,但我不知道如何解决它。
最佳答案
$timediff = 3600;
$paris_00_time = strtotime(date('Y-m-d '.'00:00'));
$paris_selected_time = $paris_00_time+1800;
$my_time = date('Y-m-d H:i:s',$paris_selected_time-$timediff);
print_r($my_time);
您可以声明 $timediff=3600;
(1 小时)
$paris_00_time = strtotime(date('Y-m-d'.'00:00'));
在有人选择日期(例如:[1800] => 00:30
)并提交后,您可以处理日期
$paris_selected_time = $paris_00_time+1800;
$my_time = date('Y-m-d H:i:s',$paris_selected_time-$timediff);
输出:2016-09-15 23:30:00
关于PHP 事件预订 : get time in increments of 30 minutes is 1 hour out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39536360/