问题描述
|
我有一个表单,用户可以从表单中选择时间
<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)存储在数据库中,日期为今天的日期。
我在想数据函数将如何转换它,但我似乎无法弄清楚。
解决方法
很简单。假设用户输入了1:09 pm,则:
$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 \”的字符串,并且应该为您解析它。