我在网站的后端有一个表单可以创建事件。用户选择事件的日期,时间以及上午或下午。但是,这在正常工作,但是一旦用户提交了数据,在某些涉及12:00的情况下,PM将从正面更改为AM。我相信这与日期有关...原因是,如果我尝试创建一个从12:00 PM开始并在9:00 PM结束的事件,它将自动将12:00 PM更改为AM。 / p>
如果我尝试创建一个开始时间为12:00 AM,结束时间为9:00 AM的事件,则会将12:00 AM更改为PM。服务器上的日期有问题吗?
在数据库中,时间的存储方式如下:12:00 AM 00:00:00和12:00:00 PM。
代码如下:
// Add a new event.
if (isset($_POST['add-event-submit']))
{
$upload_ext = pathinfo('../globals/uploads/events/'.basename($_FILES['event-image']['name']),PATHINFO_EXTENSION);
$upload_name = 'image-'.date('mdyHis').uniqid().'.'.$upload_ext;
$upload_path = '../globals/uploads/events/'.$upload_name;
$event_name = iconv('UTF-8', 'ASCII//TRANSLIT', $_POST['event-name']);
$event_type = iconv('UTF-8', 'ASCII//TRANSLIT', $_POST['event-type']);
$event_description = iconv('UTF-8', 'ASCII//TRANSLIT', $_POST['event-description']);
$event_image = $upload_name;
$event_start_date = date('Y-m-d', strtotime($_POST['event-start-date']));
$event_end_date = date('Y-m-d', strtotime($_POST['event-end-date']));
$event_start_ampm = $_POST['event-start-ampm'];
if ($event_start_ampm == 'am') { $event_start_time = date('h:i:s', strtotime($_POST['event-start-time'])); }
if ($event_start_ampm == 'pm') { $event_start_time = date('H:i:s', strtotime($_POST['event-start-time']) + 43200); }
$event_full_start = $event_start_date.' '.$event_start_time;
$event_end_ampm = $_POST['event-end-ampm'];
if ($event_end_ampm == 'am') { $event_end_time = date('h:i:s', strtotime($_POST['event-end-time'])); }
if ($event_end_ampm == 'pm') { $event_end_time = date('H:i:s', strtotime($_POST['event-end-time']) + 43200); }
$event_full_end = $event_end_date.' '.$event_end_time;
我是否应该使用类似这样的东西(即使这必须是一种解决方法):
$time = $_POST['event-start-time'];
$am = 'am';
$pm = 'pm';
$time_code = $time . $am; //add am or pm depending on user selection
$event_start_time = date('h:i a', strtotime($time_code));
答案 0 :(得分:1)
原来,我在找错地方了!我刚刚在下拉菜单中更新了12:00的值。它被设置为12:00而不是00:00,这是添加12小时(+4300)时的计算结果。现在可以正常工作了!