Правильная дата на PHP
Каждый программист который когда-либо разрабатывал движок сайта или какую-либо гостевую книгу на PHP , сталкивался с проблемой вывода даты на PHP. В этом чудесном языке программирования конечно же есть функционал для работы с датам и временем, такие функции, как date, time и strftime. Но работа в датой затруднена тем, что к примеру функция strftime выводит дату в нужном формате, но на английском языке, точнее английскими сокращениями. Поэтому нам придется написать свою функция для вывода даты на PHP. Внимательно взгляните на следующую функцию, а после мы последовательно разберём функцию.
function StrRusTime($unix_time) {
if(!$unix_time)
return "";
$Months = array("01"=>"Января",
"02"=>"Февраля",
"03"=>"Марта",
"04"=>"Апреля",
"05"=>"Мая",
"06"=>"Июня",
"07"=>"Июля",
"08"=>"Августа",
"09"=>"Сентября",
"10"=>"Октября",
"11"=>"Ноября",
"12"=>"Декабря");
$day = strftime("%d", $unix_time);
settype($day, "integer");
$month = strftime("%m", $unix_time);
$year = strftime("%Y", $unix_time);
return $day." ".$Months[$month]." ".$year;
}
И так, в нашей функции используется функция strftime, ниже дано описание функции strftime.
string strftime ( string format [, int timestamp] )
Возвращает строку, отформатированную в соответствии с аргументом format, используя аргумент timestamp или текущее системное время, если этот аргумент не передан. В аргументе format распознаётся длинный список спецсимволов, но нас интересуют только следующие:
- %d - день месяца в виде десятичного числа (от 01 до 31)
- %m - номер месяца (от 01 до 12)
- %Y - год, включая столетие
Наша функция получает время в формате UNIX timestamp, которым является число секунд прошедших с 1 января 1970 г., а возвращает строку с датой. Мы передаём переменную $unix_time функции strftime с параметром “%d”, которая возвращает нам день месяца, затем мы используем функцию settype для того, чтобы отбросить нуль перед числами типа 01. А далее используется небольшая хитрость с номер месяца. Мы получаем номер месяца и по этому номеру мы выбираем в массиве $Months текст с именем месяца. Нужный нам “Год” вы получаем также, просто пропуская его через strftime с параметром “Y”.
Экспериментировать с этой функцией вывода даты на PHP можно сколько угодно, например можно сделать вывод даты как в контакте ;)
function StrRusTime($unix_time) {
$Months = array("01"=>"Января",
"02"=>"Февраля",
"03"=>"Марта",
"04"=>"Апреля",
"05"=>"Мая",
"06"=>"Июня",
"07"=>"Июля",
"08"=>"Августа",
"09"=>"Сентября",
"10"=>"Октября",
"11"=>"Ноября",
"12"=>"Декабря");
$day = strftime("%d", $unix_time);
$month = strftime("%m", $unix_time);
settype($day, "integer");
return $day." ".$Months[$month]." ".strftime("%Y в %H:%M", $unix_time);
}