galk_in
@galk_in
Backend Developer

Как в php использовать date_create с русскими датами?

Вот такой код

$test = setlocale(LC_TIME, "Russian");
var_dump($test);
$test = date_create('06 окт. 2014 21:45:17');
var_dump($test);


Выдает:
string(19) "Russian_Russia.1251"
bool(false)


То есть русская локаль устанавливается, а вот распознавания даты из строки не выходит. Подскажите что делать? Вариант с заменой названий месяцев на английские варианты очевиден, но как-то неприятен.
  • Вопрос задан
  • 2274 просмотра
Решения вопроса 1
BoShurik
@BoShurik
Symfony developer
$dateFormatter = new \IntlDateFormatter(
    'ru',
    \IntlDateFormatter::FULL,
    \IntlDateFormatter::FULL,
    new \DateTimeZone('UTC'),
    IntlDateFormatter::GREGORIAN,
    'dd MMM yyyy HH:mm:ss'

);

$string = '06 окт. 2014 21:45:17';
var_dump($string);
$timestamp = $dateFormatter->parse($string);
$test = new \DateTime(sprintf('@%s UTC', $timestamp));
var_dump($test);


php.net/manual/ru/book.intl.php
Формат: userguide.icu-project.org/formatparse/datetime
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы