Эффективное отображение strtotime () в MySQL / PHP-запросе

Это мой PHP / MySQL запрос, как упоминалось при отображении ссылок в PHP / MySQL? :

http://pastebin.com/5Td9Bybn

Допустим, я забыл, как эффективно использовать функцию strtotime (), поскольку я хочу показать свое время показа в этом формате:

6:00

10:00

(без: 00 в конце, например, 10:00:00)

Код теперь отображает эту ошибку:

Ошибка анализа: синтаксическая ошибка, неожиданный T_ECHO в C: \ www \ vhosts \ localradio \ schedsun.php в строке 11

Я исправил ошибки в предыдущем вопросе, как я мог бы адаптировать это, если бы хотел показать время как:

6:00 утра

6:00

6 утра

(только для тестирования саке, в пределах параметров кода на Pastebin).

Я в основном прошу просто, когда я делаю свой курс по переподготовке в других частях PHP, проведя так долго обучающие массивы и т. Д.

Наконец, нужна ли мне переменная или нет – или не нужен результат $ result_ar?

Спасибо за помощь по последнему вопросу!

Вы можете сделать это непосредственно в MySQL , что избавит вас от накладных расходов на элек-тры strtotime () и гарантирует получение правильных результатов, поскольку strtotime может иногда ошибаться.

SELECT DATE_FORMAT(yourdatefield, '%h:%i') ... 

Функция PHP strtotime () имеет следующее использование:

 int strtotime ( string $time [, int $now ] ) 

Это означает, что вы передаете строковое значение для времени и необязательно значение для текущего времени, которое является отметкой времени UNIX. Возвращаемое значение представляет собой целое число, которое является меткой времени UNIX.

Примером этого использования является следующий, где дата, переданная strtotime (), может быть датой из запроса базы данных или аналогичной:

 $ts = strtotime('2007-12-21'); 

Это вернет в переменную $ ts значение 1198148400, которое является отметкой времени UNIX для даты 21 декабря 2007 года. Это можно подтвердить, используя функцию date (), например:

 echo date('Ym-d', 1198148400); // echos 2007-12-21 

strtotime () может разбирать большое количество строк и преобразовывать их в соответствующую временную метку, используя фактические даты, а также строки, такие как «на следующей неделе», «следующий вторник», «последний четверг», «2 недели назад» и т. д. на. Вот некоторые примеры:

 $ts = strtotime('21 december 2007'); echo $ts, '<br />'; echo date('Ym-d', $ts), '<br />'; 

Появится следующее:

1198148400 2007-12-21

Если сегодня 21 декабря, то следующее:

 $ts = strtotime('next week'); echo $ts, '<br />'; echo date('Ym-d', $ts), '<br />'; $ts = strtotime('next tuesday'); echo $ts, '<br />'; echo date('Ym-d', $ts), '<br />'; $ts = strtotime('last thursday'); echo $ts, '<br />'; echo date('Ym-d', $ts), '<br />'; $ts = strtotime('2 weeks ago'); echo $ts, '<br />'; echo date('Ym-d', $ts), '<br />'; $ts = strtotime('+ 1 month'); echo $ts, '<br />'; echo date('Ym-d', $ts), '<br />'; 

будет отображаться следующее:

 1199006542 2007-12-30 1198494000 2007-12-25 1198062000 2007-12-20 1197192142 2007-12-09 1201080142 2008-01-23 

Опция 1

strtotime() даст вам strtotime() метку, вы используете функцию date() для форматирования отображения времени и / или даты.

6:00

 <?php echo date('H:i', strtotime($result_ar['airtime'])); ?> 

6:00 утра

 <?php echo date('g:ia', strtotime($result_ar['airtime'])); ?> 

6 утра

 <?php echo date('ga', strtotime($result_ar['airtime'])); ?> 

Читайте о date() и ее форматировании на php.net .


Вариант 2

Сделайте это в MySQL, как предлагает @Marc B.

Изменить эту строку

 $result = mysql_query("SELECT * FROM presenters1;", $connection) or die("error querying database"); 

в

 $result = mysql_query("SELECT *, TIME_FORMAT(airtime, '%h:%i') `airtime` FROM presenters1;", $connection) or die("error querying database"); 

Затем измените эту строку:

 <div class="time"><? php echo strotime ('H') $result_ar['airtime']; ?></div> 

в

 <div class="time"><?php echo $result_ar['airtime']; ?></div> 

У вас есть пробел между <? и слово php. Я думаю, что это вызывает неожиданную ошибку эха. Вы должны иметь <?php