У меня есть вопрос относительно метода date_parse_from_format()
:
$parsed = date_parse_from_format("Y d MH:i T", '2012 28 Nov 21:00 CET');
Возвращает ассоциативный массив с подробной информацией о данной дате.
Это вернет массив с информацией о дате. Но есть ли способ конвертировать его в временную метку unix?
Johan,
Вот пример того, как реализовать mktime в вашем сценарии:
$parsed = date_parse_from_format("Y d MH:i T", '2012 28 Nov 21:00 CET'); $new = mktime( $parsed['hour'], $parsed['minute'], $parsed['second'], $parsed['month'], $parsed['day'], $parsed['year'] ); echo $new; //returns: 1354136400
Для дальнейшего использования вы можете использовать var_dump()
или print_r()
в массиве, чтобы увидеть, как получить доступ к вложенным значениям.
var_dump из $ parsed
array (size=16) 'year' => int 2012 'month' => int 11 'day' => int 28 'hour' => int 21 'minute' => int 0 'second' => int 0 'fraction' => boolean false 'warning_count' => int 0 'warnings' => array (size=0) empty 'error_count' => int 0 'errors' => array (size=0) empty 'is_localtime' => boolean true 'zone_type' => int 2 'zone' => int -60 'is_dst' => boolean false 'tz_abbr' => string 'CET' (length=3)
Вы можете получить отметку времени UNIX, пытаясь использовать mktime () для даты.
Например:
echo mktime(12, 20, 0, 10, 4, 2012 );
Вы получите такой вывод, как 1349353200
И если вы хотите, чтобы AM / PM просто добавили 12 часов, если PM.
Например:
mktime($isAM ? $hrs : ($hrs + 12), $mins, $secs, $m, $d, $y);
и вы также можете использовать strtotime ():
strtotime () – Разбор любого текстового описания даты и времени в текстовой таблице Unix
echo strtotime("2012-11-03 11:24:00PM");
Вы получите такой вывод, как 1351985040
mktime () должно удовлетворять вашим потребностям совершенно 🙂 Проверьте http://php.net/manual/en/function.mktime.php, чтобы узнать, как вы можете его использовать!