PHP活动预订:以30分钟为增量获得时间为1小时

时间:2016-09-16 16:36:54

标签: php mysql forms codeigniter datetime

我正在尝试从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;
}

但是我的时间间隔是一小时。

enter image description here

如果有人选择'2016/9/17在 01:00 上午',早上01:00的秒数值为' 0 '。

如果我将' 0 '添加到strtoseconds('2016/9/17'),我将在 00:00 '获得'2016/9/17'

所以我在这里,一小时出去。我认为这是由于我的服务器时间设置为paris + 1hr,但我不知道如何修复它。

2 个答案:

答案 0 :(得分:1)

我真的不记得在哪里,但你可以改变你的时区。通过PHP时区搜索,您可以从官方网站上找到包含所有可能国家/城市的列表。您只需要设置一个您需要的国家/城市的变量即可。我不知道您是否可以在PHP脚本中执行此操作,或者需要更改服务器中的配置文件。

答案 1 :(得分: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