Сделать timestamp из даты
Нужно из дато-времени формата 01/09/07 05:02 сделать timestamp. Первое, что приходит в голову - заменить / и : на пробелы, разбить explod'ом и в нужном порядке передать в mktime(). Существует ли более оптимальное решение?
Код:
preg_match_all("/(\d{1,2})\/(\d{1,2})\/(\d{1,2})\x20(\d{1,2}):(\d{1,2})/", $str, $arr, PREG_SET_ORDER);
$result = mktime((int)$arr[0][4], (int)$arr[0][5], 0, (int)$arr[0][2], (int)$arr[0][1], (int)$arr[0][3]);
$result = mktime((int)$arr[0][4], (int)$arr[0][5], 0, (int)$arr[0][2], (int)$arr[0][1], (int)$arr[0][3]);
Цитата: Валериус
Существует ли более оптимальное решение?
Код:
<?php
$date = '01/09/07 05:02';
$obj_TmeDate = new DateTime($date);
echo $obj_TmeDate->format('Y-m-d H:i:s');
?>
$date = '01/09/07 05:02';
$obj_TmeDate = new DateTime($date);
echo $obj_TmeDate->format('Y-m-d H:i:s');
?>
Имхо, более красивое решение. Более понятно, чем регулярки. В общем одни плюсы, из минусов можно только упомянуть, то, что работает это в PHP >= 5.1.0RC1. Но опять же это больше к вопросу о том, что следует регулярно обновлять серверное ПО. Можно конечно на это забить и сидеть сиднем на 4-ой ветке и делать двойную работу. Писать классы и функции которые давное уже реализованы в 5-ой ветке нативно.