如何使用PHP date()函数格式化输入字段以形成时间?

时间:2013-09-25 10:56:34

标签: php date time formatting

我希望用户选择我想要使用date()函数转换的时间,以便将其插入到Mysql数据库datetime表字段中。

<select name="event-start-time-hours" class="event-time">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8" selected>8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
</select>


<select name="event-start-time-mins" class="event-time">
    <option value="00" selected >00</option>
    <option value="05">05</option>
    <option value="10">10</option>
    <option value="15">15</option>
    <option value="20">20</option>
    <option value="25">25</option>
    <option value="30">30</option>
    <option value="35">35</option>
    <option value="40">40</option>
    <option value="45">45</option>
    <option value="50">50</option>
    <option value="55">55</option>
</select>

<select name="event-start-timeofday" class="event-time">
    <option value="" selected >AM</option>
    <option value="">PM</option>
</select>

我试过了:

    $time = $_POST['event-start-time-mins'] .$_POST['event-start-time-hours'];
    var_dump($dob = date("H:i:s", $time));
print_r($_POST['event-start-time-hours']); 
print_r($_POST['event-start-time-mins']);

返回:

  

string(8)“01:03:22”220

那么我该如何正确格式化呢? 非常感谢。

3 个答案:

答案 0 :(得分:1)

使用 mktime

$time = mktime($_POST['event-start-time-hours'], $_POST['event-start-time-mins'], 0);
var_dump($dob = date("H:i:s", $time));

请参阅 Codepad


注意:如果您使用的是PM,只需将12添加到小时。

答案 1 :(得分:1)

使用mktime(小时,分钟,秒,月,日,年,is_dst);创建日期的函数采用mktime

的refence

答案 2 :(得分:1)

首先修复您的HTML,以便您的选择具有值:

<select name="event-start-timeofday" class="event-time">
    <option value="AM" selected>AM</option>
    <option value="PM">PM</option>
</select>

使用DateTime

$dt = new DateTime;
$offset = $_POST['event-start-timeofday'] == 'PM' ? 12 : 0;
$dt->setTime($_POST['event-start-time-hours'] + $offset, $_POST['event-start-time-mins']);
echo $dt->format('H:i:s');

如果您需要时间验证器,可以使用this一个。