Конвертировать необычный формат даты в метку времени наиболее эффективным способом?

У меня есть дата в таком формате: 20101101120000

Мне нужно преобразовать его в метку времени с PHP.

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

Вы можете сделать это с помощью функции DateTime::createFromFormat :

 $d = DateTime::createFromFormat('YmdGis', '20101101120000'); 

$d теперь является экземпляром DateTime . Вы можете либо преобразовать его в метку времени с помощью $d->getTimestamp() либо использовать методы DateTime .

Обратите внимание, что для этого требуется PHP 5.3.

 strtotime('20101101120000') 

….

Вам нужна функция strptime .

Форматы описаны в strftime .

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

Мое предположение для большинства людей, когда они упоминают временную метку, заключается в том, что они ищут getTimestamp() метку « YYYY-MM-DD HH: MM: SS » не временную метку unix, которую вы получаете, когда используете метод getTimestamp() (см. Принятый ответ если вы действительно ищете временную метку UNIX).

Поэтому я подробно рассмотрю ответ lonesomeday (который полностью верен) для тех, кто хочет получить действительную форматированную дату, которую они могут отображать пользователям или вставлять в свою базу данных:

 $d = DateTime::createFromFormat('YmdGis', '20101101120000'); $formatedDate = $d->format('Ymd H:i:s'); // will return 2010-11-01 12:00:00 $formatedDate = $d->format('mdY h:i A'); // will return 11-01-2010 12:00 PM