Правильная дата на 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); }