Задать вопрос
@akimrasulov
Разработчик

Как сконвертировать время на русском в нумерическую дату в PHP?

Мне нужно читательную дату подогнать под мою базу данных.

Дата и время которое нужно обработать - 27 Июня 17:51:58.
И затем преобразовать во формат такой: 2014-06-27 17:51:58.

Стоит предупредить, что я на Windows 7 SP1 English, в региональных настройках стоит Unicode - Русский.

Я попробовал следущий код, но выдает ошибку: A non well formed numeric value encountered

$myTimeString = '27 Июня 17:51:58';
setlocale(LC_TIME, 'ru_RU', 'Russian_Russia', 'Russian');
$formatted_time = strftime('%d %B %H:%M:%S', $myTimeString);
echo date('Y-m-d H:i:s', $formatted_time);


Может кто-нибудь подсказать ?

Проблема еще в том, что дата написана как 27 Июня вместо 27 Июнь
  • Вопрос задан
  • 2488 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
street
@street
Backend developer
Как-то так:
$myTimeString = '27 Июня 17:51:58';
$month1 = array('Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек');
$month2 = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');

$time = date("Y-m-d H:i:s", strtotime(str_replace($month2, $month1,  mb_strtolower($myTimeString, 'utf-8'))));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@iamnothing
Как топорный, но рабочий вариант, можно написать функцию-хелпер, которая будет менять русские названия месяцев на английские, результат которой уже скармливать в strftime()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы