Правильная дата на 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);
}  
Добавил: admin
Дата добавления: 22-02-2011

Комментарии: