dazle
@dazle
Хороший электрик, но в душе программист

Как использовать готовый PHP код локализации даты (месяца и дня недели)?

У меня сохраняется дата в бд через пораметр NOW(). Структура бд timestamp.
Далее идет другой файл который берет эту дату с бд и отображает её вот он:
$res=mysqli_query($bd, "SELECT id,avatar,login,rey,message,komy,DATE_FORMAT(data,'%d %M %k:%i') AS data FROM `messages2`WHERE `komy`='$a'");
while($d=mysqli_fetch_array($res))
{ 
echo '<p134>".$d['data']."</p134>'; // 2 September 10:18
}

Мне нужно чтобы по русски отображался месяц и день недели. Вот рабочий PHP код который выводит названия дат по русски, но я не знаю как его вставить в свой файл чтобы он отображал именно мои даты по русски.
function rdate($param, $time=0) {
if(intval($time)==0)$time=time();
$MN=array("Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа",
"Сентября", "Октября", "Ноября", "Декабря");
$MonthNames[]=$MN[date('n',$time)-1];
$MN=array("","Пн", "Вт", "Ср", "Чт", "Пт", "Сб",
"Вс");
$MonthNames[]=$MN[date('w',$time)];
$arr[]='M';
$arr[]='N';
if(strpos($param,'M')===false) return date($param, $time); else return
date(str_replace($arr,$MonthNames,$param), $time);
}
echo rdate("N j M H:i"); //Пн 2 Сентября 10:18
P.S. Я бы мог сохранять сразу дату на русском в бд, но мне нужно чтобы в бд было в формате даты для будущих каких либо манипуляций с датой.
  • Вопрос задан
  • 230 просмотров
Решения вопроса 2
slo_nik
@slo_nik Куратор тега PHP
Доброе утро.
Должно быть подключено php-intl.
//значение data в базе данных 1566668242
// если значение data в базе 2019-09-02 10:18:00 - strtotime($result['data'])
$sql("SELECT id,avatar,login,rey,message,komy,data FROM `messages2`WHERE `komy`='$a'");
$row = $mysqli->query($sql);
setlocale(LC_ALL, 'ru_RU.UTF-8');
while($result = $row->fetch_assoc()){
   echo strftime('%a %e %B %G %H:%M:%S', $result['data']) . '<br>';
}
Ответ написан
irishmann
@irishmann
Научись пользоваться дебаггером
функцию rdate() засунуть повыше выборки из бд, из запроса убрать DATE_FORMAT, оставить только data, изменить вывод $d['data'] на rdate("N j M H:i", strtotime($d['data'])), и поставить нормальные кавычки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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