Я работаю над своим PHP, на котором я показываю год, месяц, день месяца и формат времени. У меня есть небольшая проблема с моим кодом.
В моем коде показано, что он отобразит только 12-часовой формат, который я хочу получить в формате 24 часа. Когда у меня есть время, например: 12 утра. Я хочу показать часы как 00, но я получаю только 12 часов. То же самое происходит и в течение 1 часа (часовое шоу как 1), 2 часа (часовое шоу как 2), 3 часа (часовое шоу 3).
Вот результат:
<tv generator-info-name="www.myscript.com/xmltv"> <channel id="101 ABC FAMILY"> <display-name>101 ABC FAMILY</display-name> <programme channel="101 ABC FAMILY" start="20140406153000" stop="20140406183000"> <title lang="en"/> <sub-title lang="en"/> <desc lang="en"/> <category lang="en"/> </programme> <programme channel="101 ABC FAMILY" start="20140406183000" stop="20140406210000"> <title lang="en"/> <sub-title lang="en"/> <desc lang="en"/> <category lang="en"/> </programme> <programme channel="101 ABC FAMILY" start="20140406210000" stop="20140406120000"> <title lang="en"/> <sub-title lang="en"/> <desc lang="en"/> <category lang="en"/> </programme> <programme channel="101 ABC FAMILY" start="20140406120000" stop="20140406123000"> <title lang="en"/> <sub-title lang="en"/> <desc lang="en"/> <category lang="en"/> </programme> <programme channel="101 ABC FAMILY" start="20140406123000" stop="2014040610000"> <title lang="en"/> <sub-title lang="en"/> <desc lang="en"/> <category lang="en"/> </programme> <programme channel="101 ABC FAMILY" start="2014040610000" stop="2014040613000"> <title lang="en"/> <sub-title lang="en"/> <desc lang="en"/> <category lang="en"/> </programme> <programme channel="101 ABC FAMILY" start="2014040613000" stop="2014040623000"> <title lang="en"/> <sub-title lang="en"/> <desc lang="en"/> <category lang="en"/> </programme> <programme channel="101 ABC FAMILY" start="2014040623000" stop="2014040630000"> <title lang="en"/> <sub-title lang="en"/> <desc lang="en"/> <category lang="en"/> </programme> <programme channel="101 ABC FAMILY" start="2014040630000" stop=""> <title lang="en"/> <sub-title lang="en"/> <desc lang="en"/> <category lang="en"/> </programme> </channel>
Вот PHP:
<?php ini_set('max_execution_time', 300); $errmsg_arr = array(); $errflag = false; $link; include ('simple_html_dom.php'); $html = file_get_html("http://www.mysite.com/get-listing.php?channels=" . $channel . "&id=" . $my_id); $time1 = $html_two->find('span[id=time1]',0)->plaintext; $title1 = $html_two->find('span[id=title1]',0)->plaintext; $time1 = explode(" ", $time1); $hoursMinutes = explode(":", $time1[0]); $hours = $hoursMinutes[0]; $minutes = $hoursMinutes[1]; if($time1[1] == "PM") { $time1[0] = date("Ymd") . ((int)($hours) + 12) . $minutes . "00"; } else { $time1[0] = date("Ymd") . $hours . $minutes . "00"; } $program_list[$count]['start_time1'] = $time1[0]; $program_list[$count]['title1'] = $title1; $xml .= "<channel id='" . $my_id. " " . $channel . "'>"; $xml .= "<display-name>" . $my_id. " " . $channel; $xml .= "</display-name>"; $xml .= "<programme channel='" . $my_id. " " . $channel . "' start='" . $program_list[$i]['start_time1'] . "' stop='" . $program_list[$i]['end_time1'] . "'>"; $xml .= '<title lang="en">'; $xml .= '</title>'; $xml .= '<sub-title lang="en">'; $xml .= '</sub-title>'; $xml .= '<desc lang="en">'; $xml .= '</desc>'; $xml .= '<category lang="en">'; $xml .= '</category>'; $xml .= '</programme>';
Как вы можете видеть в теге времени начала, например: 20140406183000. 2014 год, 04 – месяц, 06 – день месяца, 18 – час, 30 – минуты, а 00 – секунды. Если вы посмотрите на часы, вы будете знать, какие часы правильные и какие часы не верны.
Что вы можете видеть, у меня есть некоторые часы, которые не верны. Часы, которые не правильны, это 12 утра (предположительно 00), 1am (предположительно 01), 2 утра (предположительно, 02) и так далее.
Не могли бы вы рассказать мне, что мне нужно сделать, чтобы исправить эту проблему?
В коде вы можете сделать:
$time_old_format = $html_two->find('span[id=time1]',0)->plaintext; $time_new_format = date("YmdHis", strtotime($time_old_format));
Это проанализирует, например, строку с 12:30 AM
до 20140407003000
. (В зависимости от текущего дня, конечно.)
Используйте strtotime()
чтобы преобразовать стандартное текстовое datetime в текстовое время и timestamp и date()
для отображения в любом формате, который вы хотите.
$datetime = "03-05-2000 03:07:34 pm"; $timestamp = str_to_time($datetime); $date = date('d M, YH:i:s',$timestamp); //03 May, 2000 15:07:34