PHP 事件预订 : get time in increments of 30 minutes is 1 hour out

标签 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 .

我来了,还有一个小时。我认为这是由于我的服务器时间被设置为巴黎 +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/

相关文章:

php - 将机器人与人类访客区分开来获取统计信息?

php - CakePHP 找不到 UsersController

c++ - EasyPHP MySQL 无法启动

php - laravel 数据库播种有限制吗?

php - DDD : Should I use the Symfony EventDispatcher for my domain events?

php - 获取mysqldump调试信息

mysql - ruby on rails什么是vs没有纸痕迹的建筑

Javascript 使用 name 属性选择表单元素

javascript - 通过表单将用户发送到付款 URL

html - 如何使联系表格 float 到文本的左侧?