Задать вопрос
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)


То есть русская локаль устанавливается, а вот распознавания даты из строки не выходит. Подскажите что делать? Вариант с заменой названий месяцев на английские варианты очевиден, но как-то неприятен.
  • Вопрос задан
  • 2279 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽