Конвертировать необычный формат даты в метку времени наиболее эффективным способом?
У меня есть дата в таком формате: 20101101120000
Мне нужно преобразовать его в метку времени с PHP.
Я искал документы в формате PHP в Интернете, но не могу найти что-либо, что может конвертировать напрямую. Есть ли один? Если нет, то какой самый эффективный способ сделать конверсию? Благодарим вас за помощь.
Ответы
Ответ 1
Вы можете сделать это с помощью DateTime::createFromFormat
:
$d = DateTime::createFromFormat('YmdGis', '20101101120000');
$d
теперь является экземпляром DateTime
. Вы можете либо преобразовать его в метку времени с $d->getTimestamp()
, либо использовать DateTime
.
Обратите внимание, что для этого требуется PHP 5.3.
Ответ 2
strtotime('20101101120000')
....
Ответ 3
Вам нужна функция strptime
.
Форматы описаны в strftime
.
Ответ 4
Я только добавляю к этому разрешенному вопросу, потому что это может быть полезно для пользователей, которые спотыкаются здесь (как и я), и ищут фактическую метку даты.
Мое предположение для большинства людей, когда они упоминают временную метку, заключается в том, что они ищут обычную метку времени YYYY-MM-DD HH: MM: SS, а не временную метку unix, которую вы получаете, когда вы используйте метод getTimestamp()
(см. принятый ответ, если вы действительно ищете временную метку UNIX).
Итак, я продолжу подробный ответ на lonesomeday (что вполне правильно) для тех, кто хочет получить действительную форматированную дату, которую они могут отображать пользователям или вставлять в свою базу данных:
$d = DateTime::createFromFormat('YmdGis', '20101101120000');
$formatedDate = $d->format('Y-m-d H:i:s'); // will return 2010-11-01 12:00:00
$formatedDate = $d->format('m-d-Y h:i A'); // will return 11-01-2010 12:00 PM