2014-02-05 4 views
1

Я извлечения даты из URL `Как получить дату «чч: мм: сс» формат с помощью PHP

https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics,status 
&videoSyndicated=true 
&type=video 
&id=CRvoJEqrYTY 
&key=AIzaSyD68YEP1N9J0-umFWuzMV3NEN3T5VBvoHo` 

в PT1H8M21S. Как его преобразовать в hh:mm:ss с использованием php

+2

что вы пытаетесь сделать? я не понимаю вопрос – Dwza

+0

Я пытаюсь преобразовать «PT1H8M21S» в формат даты в формате php «hh: mm: ss» – lalith458

+0

а что заставляет вас думать, что это формат времени? – Dwza

ответ

1

Строка 'PT1H8M21S' Это не дата, а время. Это интервал (в частности, это строковое представление DateInterval).

Для добавления этого интервала необходима базовая дата DateTime.

Попробуйте что-то вдоль этих линий

$interval = $dv = new DateInterval('PT1H8M21S'); //the value you get from the url 
$time = new DateTime('2000-01-01'); //any date works fine here. 
            // Note: Hours, mins and seconds == 0 
$time->add($interval); 
echo $time->format('H:i:s'); 

первых, создать соответствующую DateInterval объект из строки, которую вы получили.

Затем создайте базовый объект DateTime. Любая дата в порядке, вам просто нужно убедиться, что у вас есть часы, минуты и секунды (я предполагаю, что интервал будет всегда меньше одного полного дня.)

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

-1

Если вы считаете, что 1H8M21S означает 1 час 8 минут & 21 секунд, используйте preg macth для получения значений.

$str = 'PT1H8M21S';preg_match('/PT(.+)H(.*)/', $str, $m);echo $m[1]; 
+0

Это просто дает 1. – putvande

+0

да, это означает 1 час. Вы можете написать один и тот же код за минуты и секунды –

+0

Можете ли вы изменить свой ответ, чтобы он также выдавал минуты и секунды. – putvande

0

Попробуйте использовать str_replace функцию как этот

$time = "PT1H8M21S"; 
$time = str_replace("PT", "", $time); 
$time = str_replace("H", ":", $time); 
$time = str_replace("M", ":", $time); 
$time = str_replace("S", "", $time); 
echo $time; 

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

0
preg_match('/PT(.+)H(.+)M(.+)S$/', $str, $m3); echo $m3[1].":".$m3[2].":".$m3[3] 
0

изменения $ youtube_time на ваш интервал переменной

$youtube_time = 'PT1H8M21S'; 
$duration = new DateInterval($youtube_time); 
$videoDuration = (60 * 60 * $duration->h) + (60 * $duration->i) + $duration->s; 
print gmdate("H:i:s", $videoDuration); 
+0

спасибо, я получил решение, поддерживает ли оно для всех версий php? – lalith458

+0

поддерживается на PHP 5.3.0+ – FabioG

+0

k. может ли сказать мне код, который поддерживает для всех версий, потому что моя версия сервера php «5.2.17» – lalith458

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