@matthewstafford

Не могу вывести переменную с датой (месяц). В чём проблема?

Здравствуйте! Разбил дату из базы данных на разные переменные, чтобы выводить дату по отдельности. Всё выводится отлично, кроме месяца. Который день пытаюсь разобраться в чем проблема и всё безуспешно. Быть может кто-либо из вас догадается, как это исправить.

Дата в таблице у меня записана в таком формате: 01.01.1970 в 00:00
$edited['posted1'] = explode('.', $news['date']);
$day['posted'] = $edited['posted1'][0]; $month['posted'] = $edited['posted1'][1]; $other['posted'] = $edited['posted1'][2];

$edited['posted2'] = explode(' в ', $other['posted']);
$year['posted'] = $edited['posted2'][0]; $time['posted'] = $edited['posted2'][1];


Все элементы выводятся правильно, как надо. У переменной с месяцем выводится только первая цифра, вместо двух.

#UPD
Хотя если проверять код через любой PHP Code Tester, он выводит всё правильно :/
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
Exomode
@Exomode
Архитектор ПО
\DateTime::createFromFormat("d.m.Y в H:i", $dateStr);

Псевдоним: date_create_from_format.

И никаких махинаций с explode не надо.

По той же ссылке выйдете на примеры, как потом обратно в строку преобразовать, как работать с интервалами и как добраться до составных частей даты (год, день, месяц, час и тд).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
larisamoroz
@larisamoroz
Курю маны, втыкаю в код, ваяю, починяю.
Сделайте так:
$date_parts_match = preg_match('~(\d+)\.(\d+)\.(\d+)[^\d]+([\d+]+)~ui',$news['date'],$date_parts);
if ($date_parts_match) {
$day['posted'] = date_parts[1];
$month['posted'] = date_parts[2];
$year['posted'] = date_parts[3];
$time['posted'] = date_parts[4];
}
else {
  //ошибка ! дата в каком-то дургом формате
}


https://3v4l.org/WbBkV
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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