Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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