Один из наиболее простых приемов. Про него почему-то забывают, указывая дату
на страницах в совершенно неудобоваримом виде, типа 10/10/00
или 2001-05-01. Хорошо если в таких датах присутствует число
более 12-и — становится понятно, где указан день, а где месяц. Но
от этого легче не становится.
Сначала узнаем номер месяца:
$curDateD = date("d");
$curDateM = date("m"); # номер месяца
$curDateY = date("Y");
Номер месяца узнали, теперь нужна функция преобразования цифрового значения в
буквенный. Назовем функцию monthFromNum. В качестве параметров вызова
укажем:
Номер месяца.
В каком описании должно быть название месяца, то есть «январь» или «янв».
Язык, на котором должно быть сообщено название месяца, то есть либо
английский "january", либо русский «январь». В принципе, можно на любом языке.
Пока остановимся на русском.
function monthFromNum($input, $type="S", $lang="R"){
if ($lang == "R"){
if ($type == "S"){
$Months = array("01"=>"янв","02"=>"фев",
"03"=>"мар","04"=>"апр",
"05"=>"май","06"=>"июн",
"07"=>"июл","08"=>"авг",
"09"=>"сен","10"=>"окт",
"11"=>"ноя","12"=>"дек");
}
elseif ($type == "L"){
$Months = array("01"=>"январь","02"=>"февраль",
"03"=>"март","04"=>"апрель",
"05"=>"май","06"=>"июнь",
"07"=>"июль","08"=>"август",
"09"=>"сентябрь","10"=>"октябрь",
"11"=>"ноябрь","12"=>"декабрь");
}
}
for (reset($Months); list($k,$v) = each($Months);) {
Предлагаю именно — символ неразрывного пробела, иначе текст
даты может некрасиво разъехаться при определенных обстоятельствах. Или нужно
применять <nobr>11 марта 2001г.</nobr>
Короткие замечания:
Данная функция предполагает обработку не только даты, но и может быть
модифицирована для любых преобразований цифра -> слово.
Если необходимо работать только с датой, то эту функцию можно оставить
в покое, :) и воспользоваться старым провереным способом —
setlocale();
setlocale (LC_TIME, "russian");
print (strftime("%B.\n"));
Возможные значения LC_TIME зависят от операционной системы.