Изменения даты при выводе из БД

dmitry1984

Новичок
Изменения даты при выводе из БД

Добрый вечер.

Как сделать, чтобы записанную в БД дату в виде "28.03.2005, 19:38" вывести так "28 Марта, 2005, 19:38" ???
 

Фанат

oncle terrible
Команда форума
никак.
дату в базу надо записывать в предназначенном для этого формате.
а раз ты от себя формат придумал, то сам и с выводом парься
 

dmitry1984

Новичок
Я исправил на datetime. Можно на примере мне показать как месяц написать?
 

Фанат

oncle terrible
Команда форума
кхе кхе :)
а вот месяц по-русски-то встроенные функции тебе не напишут :)
придётся функцию на пхп писать.
а месяц числом тебя никак не устроит?
 
SELECT MONTH( '1998-02-03 12:43:22' )
выведет 2

самый простой способ вывеси на русском языке
создай массив
$month = array(
'Январь' ,
'Февраль' ,
'Март',
'Апрель',
'Май',
'Июнь',
'Июль',
'Август',
'Сентябрь',
'Октябрь',
'Ноябрь',
'Декабрь');

и выводи по ключу

незабывай от полученного месяца в виде цифры вычесть 1
 

Demiurg

Guest
nofx
может стоит создать такой массив, что бы ничего вычитать не приходилось бы ?
 

dmitry1984

Новичок
Че-то я не понял...
Ну сделал я

$mes = $month[date(m,$date) - 1];

это месяц только, а все остальное то как вывести?
 

Demiurg

Guest
какие остальные ?
и что за переменная $date ?
 

Demiurg

Guest
тебе вроде надо было из базы данные брать или я сто-то упустил ?
 

dmitry1984

Новичок
Нет, не перепутал, просто я туда (не в datetime) значение time() записал.... И теперь по нему беру.

Ну я впринципе сделал, но что-то какой-то неороший вариант получился...

PHP:
$time = значение из БД
$month = array(
'Января' ,
'Февраля' ,
'Марта',
'Апреля',
'Мая',
'Июня',
'Июля',
'Августа',
'Сентября',
'Октября',
'Ноября',
'Декабря');

$mes = $month[date(m,$time) - 1];
$day = date("j", $time);
$year = date("Y", $time);
$hour = date("H", $time);
$minute = date("i", $time);

echo "".$day." ".$mes." ".$year.", ".$hour.":".$minute."";
 

Фанат

oncle terrible
Команда форума
PHP:
function rdate($date=0,$format='') {
  // в качестве даты понимает unix timestamp и date или datetime из mysql
  // формат - обычный формат date() с одним исключением
  // \P (латиниская) - русское название месяца в именительном падеже
  // \p (латиниская) - русское название месяца в родительном падеже

  if (!$date) $date=time();
  if (preg_match('!(\d{4})-(\d{2})-(\d{2})( (\d{2}):(\d{2}):(\d{2}))?!',$date,$m)) {
    if (isset($m[4])) $date=mktime($m[5],$m[6],$m[7],$m[2],$m[3],$m[1]);
    else $date=mktime(0,0,0,$m[2],$m[3],$m[1]);
  }
  if(!$format) {
    $format='d.m.y H:i';
    if (!isset($m[4])) $format='d.m.y';
  }
  $rmon=array('январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь');
  $format=str_replace('\P',' '.$rmon[date('n',$date)-1].' ',$format);
  $rmon=array('января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря');
  $format=str_replace('\p',' '.$rmon[date('n',$date)-1].' ',$format);
  return date($format,$date);
}

//примеры:
echo rdate();
echo rdate(0,'d \p Y года');
echo rdate($row['date'],'\P');
 

dmitry1984

Новичок
Что я вот в этом echo rdate(0,'d \p Y года'); примере непонял где время, а также не понял, куда в этом примере вставить юниксовое время полученное из базы. Функцию я в отдельный файл впихнул.
 

dmitry1984

Новичок
Посмотрел, насколько понял вот так должно быть echo rdate($row['date'],'d \p Y года'); где $row['date'] и есть значение из БД, правильно я все понял?

-~{}~ 29.03.05 00:26:

Хотя нет, неправильно, времени то нет.
 
Сверху