簡體   English   中英

如何讓此 PHP 代碼中的 AM/PM 正常工作?

[英]How can I get the AM/PM in this PHP code to work correctly?

我在網站的后端有一個表單來創建事件。 用戶為事件選擇日期、時間和上午或下午。 這是正常工作的,但是一旦用戶提交數據,在某些涉及 12:00 的情況下,PM 就會在前面更改為 AM。 我相信這與日期有關...原因是,如果我嘗試創建一個從下午 12:00 開始到晚上 9:00 結束的事件,它將自動將下午 12:00 更改為上午。

如果我嘗試創建一個開始時間為上午 12:00 和結束時間為上午 9:00 的事件,它會將上午 12:00 更改為下午。 服務器上的日期有問題嗎?

在數據庫中,12:00 AM 00:00:00 和 PM 12:00:00 的時間存儲如下,這是正確的。

這是代碼:

// 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));

所以事實證明我找錯了地方! 我剛剛在下拉菜單中更新了 12:00 的值。 它被設置為 12:00 而不是 00:00,這是添加 12 小時 (+4300) 時忽略計算的原因。 它現在工作正常!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM