PHP - форматирование ЧЧ: ММ: СС до 12 часов ЧЧ: ММ: строка - PullRequest
0 голосов
/ 13 января 2012

Я надеюсь, что это будет кусок пирога для кого-то!Вывод строки в настоящее время для всех в 12:00.

Следующий код из MySQL в формате ЧЧ: ММ: SS (hours_open, hours_closed)

$get_hours_sql = "SELECT * FROM client_hours ORDER BY day"; 
$get_hours_res =  mysqli_query($dbConnect, $get_hours_sql) or die(mysqli_error($dbConnect));

// Establish the output variable
$hoursList = '<div class="right_bar">';
while ($productList = mysqli_fetch_array($get_hours_res)) {
    $id_hours  = $productList['id_hours'];
    $day = $productList['product_name'];
    $open = $productList['hours_open'];
    $close = $productList['hours_close'];

    $hoursList .= ''.date("g:ia", $open).' - '.date("g:ia", $close).'<br/>';
}

$hoursList .= '</div>';

echo $hoursList;

В данный момент вывод

12: 00–12: 00 ***************

Я хочу получить вывод в

11: 00am - 11:00 pm

, который будет представлять записи базы данных.

Спасибо!

Ответы [ 2 ]

1 голос
/ 13 января 2012

Я всегда нахожу, что PHP <-> MySql обрабатывает даты с трудом (но с улучшением в 5.3).

Я предполагаю, что запрос mysql возвращает дату в виде строки, а date () ожидает отметку времени.

Часто я просто получаю mysql, чтобы отформатировать для меня дату в виде строки и вернуть ее в качестве дополнительного поля, например:

$get_hours_sql = "SELECT *,date_format(hours_open,'%h:%i %p') as hours_open_formatted, date_format(hours_close,'%h:%i %p') as hours_close_formatted  FROM client_hours ORDER BY day"; 

тогда просто используйте отформатированные поля:

$hoursList .= ''.$productList['hours_open_formatted'].' - '.$productList['hours_close_formatted'].'<br/>';
1 голос
/ 13 января 2012

Данные принимают в качестве второго параметра метку времени Unix, поэтому то, что вы пытаетесь сделать, просто не будет работать.Вы можете использовать либо функцию mysql TIME_TO_SEC, либо mktime php для преобразования строки времени в метку времени Unix.

Пример:

$openHours = explode(':',$productList['hours_open']); 
$timestamp = mktime($openHours[0],$openHours[1]);
$yourDate = date("g:ia",$timestamp);

Редактировать: я думаю, что вы должны попробовать ответ Бена, я думаю, что это лучшее решение, чем мое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...