2012-03-13 3 views
1

Я ищу, чтобы извлечь время из этой строкисинтаксического анализа строки времени

Tue, 13 Mar 2012 04:48:34 -0400 

Я знаю, что StrToTime может работать, но я не уверен в implemation о том, чтобы просто получить 04:48:34 из этой строки

благодаря

+0

Что делать, если часовой пояс - это нечто иное, чем «-0400»? Вы действительно просто хотите игнорировать часовой пояс? –

+0

99.999% веб-разработчиков не заботятся о часовом поясе (нет ничего о вас Autolycus). Они * могут * ухаживать только в том случае, если сайт становится международным ... –

ответ

4

Вы можете использовать date_parse, который возвращает массив с частями даты/времени в виде отдельных элементов. Затем вы можете извлечь временные части, например.

$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400'; 
$dateParts = date_parse($dateString); 
$timeString = $dateParts['hour'] . ':' . $dateParts['minute'] . ':' . $dateParts['second']; 

Или лучше, если у вас есть PHP5.3, вы можете использовать DateTime class

$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400'; 
$date = new DateTime($dateString); 
echo $date->format('H:i:s'); 
+0

отлично! не знал о классе DateTime в php 5.3+ – Autolycus

+0

, знаете ли вы, знаете ли вы, используя этот класс, я могу найти следующий час шкафа. Как в этом случае это будет 5 – Autolycus

+0

@Autolycus Зависит от того, что вы подразумеваете под «ближайшим ближайшим часом». Это звучит как еще один вопрос для меня. Дайте ему пойти и задать другой вопрос, если вы столкнулись с проблемой. – liquorvicar

-1

Может быть, вы можете использовать функцию sscanf?

Вот «домашний» решение, которое работает:

$r = sscanf ('Tue, 13 Mar 2012 04:48:34 -0400' , '%s %d %s %d %02d:%02d:%02d %d'); 
if (count($r)==7) { 
    $hh = intval($r[4]); 
    $mn = intval($r[5]); 
    $ss = intval($r[6]); 
    if (
    ($hh>=0) && ($hh<=23) && 
    ($mn>=0) && ($mn<=59) && 
    ($ss>=0) && ($ss<=59) 
) { 
    /* Time is valid, use it 


    */ 
    } 
} 
0

Не знаю, существуют ли конкретный метод, который может сделать это для вас, но с верхней части моей головы:

echo date('H:m:s'); 
+0

Это вернет текущий час: минуты: секунды, так как вы не проходите в отметке времени Unix (второй параметр для даты). – MetalFrog

Смежные вопросы