Как разобрать YouTube вернул дату в метку времени? - PullRequest
1 голос
/ 15 декабря 2010

YouTube возвращает дату Updated date и Submitted on следующим образом: 2010-08-22T04:46:18.000Z

Есть ли функция PHP или маска даты, которая ее анализирует?

Ответы [ 3 ]

6 голосов
/ 15 декабря 2010
$dt = DateTime::createFromFormat("Y-m-d\TH:i:s.uP", "2010-08-22T04:46:18.000Z");
var_dump($dt);
// object(DateTime)#1 (3) {
//   ["date"]=>
//   string(26) "2010-08-22 04:46:18.000000"
//   ["timezone_type"]=>
//   int(2)
//   ["timezone"]=>
//   string(1) "Z"
// }

Используется класс DateTime. Это часовой пояс и доли секунды. Для отображения даты используйте метод format:

echo $dt->format("Y-m-d H:i:s e");
// 2010-08-22 04:46:18 Z

Чтобы преобразовать дату в местный часовой пояс, используйте метод setTimezone:

$dt->setTimezone(new DateTimeZone(date_default_timezone_get()));
echo $dt->format("Y-m-d H:i:s e");
// 2010-08-21 21:46:18 America/Los_Angeles
3 голосов
/ 15 декабря 2010

звучит как strtotime - это то, что вы ищете.

РЕДАКТИРОВАТЬ: , если это не сработает, посмотрите на Dateи классы времени - существуют методы для анализа дат в указанных форматах (, например, - не возвращает метку времени напрямую, но если вы создаете DateTime из этого, вы можете использовать его getTimestamp -метод)

0 голосов
/ 15 декабря 2010

Попробуйте это:

$date=substr("2010-08-22T04:46:18.000z",0,strlen("2010-08-22T04:46:18.000z")-1);
$stamp=strtotime($date);

Кажется, что "z" в конце является проблемой для strtotime.

...