2012-03-29 2 views
0

Я пытаюсь преобразовать формат времени в формате ниже на метку времени UNIX с помощью PHPПреобразование этого формата в Unix-времени в PHP

JN YH: Я: s

Im пытаясь найти способ преобразования в временную метку unix, чтобы ее можно было использовать в SQL-базах данных. Примером даты, которые мне нужно преобразовать:

28 мар 12 16:37:34

Я попытался функции, называемые «strptime» и «указываете ей», что я нашел на StackOverflow в нет успеха - я не совсем уверен, что я делаю с ними. Если это ответ, может кто-нибудь объяснить, как их использовать? Ive попытался понять документацию PHP, но Im просто не понял.

Сообщение Я читал здесь: PHP date format converting

ответ

1

echo strtotime('28 Mar 12 16:37:34'); //1332945454

http://php.net/manual/en/function.strtotime.php

+0

Спасибо! Я знал, что должно быть что-то простое, что я отсутствовал :) – kirgy

+1

@kirgy: В этом случае выходное значение может отличаться от '1332945454'. Временная метка зависит от настройки часового пояса, и этот код не выводит одинаковое значение для каждого часового пояса. Просто имейте в виду. Вместо этого установите часовой пояс, прежде чем использовать функцию 'strtotime()' (посмотрите [date_default_timezone_set] (http://php.net/manual/en/function.date-default-timezone-set.php)) или добавьте timezone/offset для вашей строки, что-то вроде 'strtotime ('28 12 марта 16:37:34 UTC ')', 'strtotime ('28 12 марта 16:37:34 PST')', 'strtotime ('28 12 марта 16:37:34 UTC + 0200 ') 'и т. Д. – Wh1T3h4Ck5

+0

спасибо за это, я написал свой собственный XML-парсер, затем обрезал часть часового пояса, в моем случае {+0000} у меня возникали проблемы при сравнении с текущим потому что казалось, что он не учитывает летнее время без часового пояса. Теперь с часовым поясом, в том числе, работает как и ожидалось. – kirgy

2

Если вам нужна максимальную гибкость в разборе формата, используйте DateTime::createFromFormat()

$dt = DateTime::createFromFormat(
    'j M y H:i:s', $dateString, new DateTimeZone('Your/Timezone')); 
$timestamp = $dt->getTimestamp(); 
+0

+1 для максимальной гибкости – Niko

0

РНР путь использовать дату() и strtotime()

SQL использует YYYY-MM-DD HH: MM: SS

$dateTime = date('Y-m-d H:i:s', strtotime('28 Mar 12 16:37:34')); 
+0

Дата функции() не возвращает метку времени. OP хочет преобразовать форматированную строку даты/времени в временную метку Unix (читать заголовок и вопрос), не изменять форматированную строку из одной в другую. Ваш пример возвращает '' 2012-03-28 16: 37: 34'', который также является форматированной строкой. – Wh1T3h4Ck5

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