2014-09-18 3 views
1

У нас есть запись в базе данных о времени события, оставшемся P1DT3H53M45S. Это означает, что 1 день, 3 часа 53 мин и 45 секунд. Я хочу получить дату из этого формата.Как получить дату из строкового формата

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

Есть ли лучший способ найти оставшуюся продолжительность, кроме взрыва?

+2

Regex, было бы лучше, я думаю, – Axel

+0

я не понимаю, как вы можете взорвать такую ​​строку как 'P1DT3H53M45S'. каким разделителем? – hindmost

+0

, если его можно изменить, время Unix лучше IMHO –

ответ

2

Не нужно взорваться. Используйте DateInterval вместо:

$interval = new DateInterval('P1DT3H53M45S'); 
echo $interval->format('%d day, %h hours, %I minutes, %s seconds'); 
// 1 day, 3 hours, 53 minutes, 45 seconds 
1

P1DT3H53M45S не дата, а интервал. Вы можете использовать класс DateInterval для создания объекта DateInterval, из которого вы можете отформатировать его, или добавить его к некоторым вашим датам.

$interval = new DateInterval('P1DT3H53M45S'); 
print_r($interval); 

# format it 
echo $interval->format('%d days, %h hours, %i minutes, %s seconds'); 

# add it to some date 
$dt = new DateTime; 
$dt->add($interval); 
echo $dt->format('Y-m-d H:i:s'); 

demo

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