Добрый вечер, прошу вашей помощи так как времени вообще нет.
Нужно написать функцию которая будет преобразовывать дату из такого формата:
08 Августа 2010г. [23:59]
в результат функции time() т.е. время в секундах.
Все названия месяца начинаются с большой буквы в родительном падеже.
Для разбора времени напишу регулярное выражение чтобы облегчить задачу.
PHP:
скопировать код в буфер обмена
preg_match_all("~([0-9]+) ([а-я]+) ([0-9]+)г. \[([0-9]{1,2}):([0-9]{1,2})\]~iu", $data, $inf); /* Результут переменной $inf Array ( [0] => Array ( [0] => 08 Августа 2010г. [23:59] ) [1] => Array ( [0] => 08 ) [2] => Array ( [0] => Августа ) [3] => Array ( [0] => 2010 ) [4] => Array ( [0] => 23 ) [5] => Array ( [0] => 59 ) )
Заранее благодарен
(Добавление)
Уделил себе время, написал функцию. Может пригодится кому тоже:
PHP:
скопировать код в буфер обмена
// Дата в формате: 08 Августа 2010г. [23:59] // Секунды генерируются функцией mt_rand() function convert_data($data_text) { preg_match_all("~([0-9]+) ([а-я]+) ([0-9]+)г. \[([0-9]{1,2}):([0-9]{1,2})\]~iu", $data_text, $info); if($info[2][0] == "Января") $m = 1; if($info[2][0] == "Февраля") $m = 2; if($info[2][0] == "Марта") $m = 3; if($info[2][0] == "Апреля") $m = 4; if($info[2][0] == "Мая") $m = 5; if($info[2][0] == "Июня") $m = 6; if($info[2][0] == "Июля") $m = 7; if($info[2][0] == "Августа") $m = 8; if($info[2][0] == "Сентября") $m = 9; if($info[2][0] == "Октября") $m = 10; if($info[2][0] == "Ноября") $m = 11; if($info[2][0] == "Декабря") $m = 12; $d = (int)$info[1][0]; $date = mktime($info[4 ][0 ], $info[5 ][0 ], mt_rand(0 , 59 ), $m, $d, $info[3 ][0 ]); return $date; }
|