转换/保存用户提交的“时间”数据库

问题描述:

我有一个表格,用户从一种形式转换/保存用户提交的“时间”数据库

<select name='hour'> 
    <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'>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='min'> 
    <option value='00'>00</option> 
    <option value='15'>15</option> 
    <option value='30'>30</option> 
    <option value='45'>45</option> 

</select> 
<select name='ampm'> 
    <option value='AM'>AM</option> 
    <option value='PM'>PM</option> 
</select> 

我张贴这些信息来处理页面,在这里我需要保存的时间选择一个时间,用户以DateTime格式在数据库中提交。数据将需要以日期时间格式(2011-06-11 23:11:07)存储在数据库中,日期为今天的日期。

我在想数据函数将会如何转换它,但我似乎无法弄清楚。

够简单。假设用户输入13:09,则:

$hour = intval($_REQUEST['hour']); // 1 
$min = intval($_REQUEST['minute']); // 9 
if (($_REQUEST['ampm'] == 'PM') && ($hour <> 12)) { 
    $hour += 12; // adjust for 24 clock, so $hour becomes 13 
} 

$timestring = sprintf('%02d:%02d:00', $hour, $min); // 13:09:00 
$datestring = date('Y-m-d'); // 2011-06-12 

$timestamp = $datestring . ' ' . $timestring; // 2011-06-12 13:09:00 

还有的要对这个其他方式,但是这可能是有点更容易理解。

strtotime()会将字符串输入转换为时间戳。然后,您可以使用此时间戳和date()函数以任何您喜欢的方式格式化日期。

你应该给它传递一个格式类似于“YYYY-MM-DD HH:MM:SS”的字符串,它应该为你解析它,没有任何问题。