Оглавление

17. Функции для работы с датой и временем

Получение текущей даты,  даты создания файла и проверка  корректности введенной даты

Для работы с датами в PHP чаще всего применяются следующие функции:
□ date_default_timezone_set(<Зона>) настраивает зону местного времени:

date_default_timezone_set('Europe/Moscow');


□ time() возвращает количество секунд, прошедшее с 1 января 1970 г.:

echo time();


□ date(<Строка формата даты/времени>, [<Исходная дата>]) возвращает дату и время.

В параметре <Строка формата даты/времени> могут быть использованы следующие служебные символы:
•  U — количество секунд, прошедшее с 1 января 1970 г.;
•  Y — год из 4 цифр;
•  y — год из 2 цифр;
•  z — день с начала года (от 0 до 365);
•  F — название месяца по-английски;
•  m — номер месяца с предваряющим нулем (от "01" до "12");
•  n — номер месяца без предваряющего нуля (от "1" до "12");
•  M — аббревиатура месяца из 3-х букв по-английски;
•  d — номер дня с предваряющим нулем (от "01" до "31");
•  j — номер дня без предваряющего нуля (от "1" до "31");
•  l — название дня недели по-английски;
•  w — номер дня недели (0 — для воскресенья и 6 — для субботы);
•  D — аббревиатура дня недели из 3-х букв по-английски;
•  A — "AM" (до полудня) или "PM" (после полудня);
•  a — "am" (до полудня) или "pm" (после полудня);
•  H — часы в 24-часовом формате (от "00" до "23");
•  h — часы в 12-часовом формате (от "01" до "12");
•  i — минуты (от "00" до "59");
•  s — секунды (от "00" до "59").

echo date("U - Y - y - z - F - m - n - M - d – j") . "<br>";
echo date("l - w - D - A - a - H - h - i - s");


// Выведет:
// 1226784874 - 2008 - 08 - 320 - November - 11 - 11 - Nov - 16 – 16
// Sunday - 0 - Sun - AM - am - 00 - 12 - 34 - 34
Выведем текущую дату и время таким образом, чтобы день недели и месяц были написаны по-русски (листинг 15).

Листинг 15. Вывод текущей даты

date_default_timezone_set('Europe/Moscow');
$day = array('воскресенье', 'понедельник', 'вторник', 'среда', 'четверг',
             'пятница', 'суббота');
$month = array('', 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня',
              'июля', 'августа', 'сентября', 'октября', 'ноября', 
              'декабря');
$date = 'Сегодня<br>';
$date .= $day[(int)date('w')];
$date .= date(' d ');
$date .= $month[(int)date('n')];
$date .= date(' Y');
$date .= date(' H:i:s') . '<br>' . date('d.m.y');
echo $date;


Код, представленный в листинге 15, выведет

Сегодня
понедельник 16 ноября 2009 00:37:08
16.11.09



Если в функции date() указан второй параметр, то дата будет не текущая, а соответствующая  значению  из  второго  параметра.  Например,  в  функцию можно  передать  количество  секунд,  прошедших  с 1 января 1970 г.,  и  получить любое другое форматирование даты.

$date = date("Дата d-m-Y", 1180986651);
echo $date;
// Выведет Дата 04-06-2007


Или можно получить дату создания файла:

$date = date("Дата d-m-Y", filectime("index.php"));
echo $date;
// Выведет Дата 20-06-2008


Функция strftime()  позволяет  отформатировать  дату  в  зависимости  от настроек локали. Имеет следующий формат:
strftime(<Строка формата даты/времени>[,
         <Количество секунд, прошедшее с 1 января 1970 г.>])
Если  второй  параметр  не  указан,  то  используется  значение,  возвращаемое функцией time(). В параметре <Строка формата даты/времени> могут быть использованы следующие служебные символы:
%y — год из 2 цифр;
%Y — год из 4 цифр;
%j — день с начала года (от "001" до "366");
%m — номер месяца с предваряющим нулем (от "01" до "12");
%b — сокращенное название месяца в текущей локали:

setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
echo strftime("%b"); // ноя


%B — полное название месяца в текущей локали:

setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
echo strftime("%B"); // Ноябрь


%W — номер недели в  году. Первый понедельник  года считается первым днем первой недели;
%d — номер дня с предваряющим нулем (от "01" до "31");   
%a — сокращенное название дня недели в текущей локали:

setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
echo strftime("%a"); // Вт


%A — полное название дня недели в текущей локали:

setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
echo strftime("%A"); // вторник


%H — часы в 24-часовом формате (от "00" до "23");
%I — часы в 12-часовом формате (от "01" до "12");
%M — минуты (от "00" до "59");
%S — секунды (от "00" до "59");
%Z — временная зона:

setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
echo strftime("%Z"); // Московское время (зима)


%c — формат даты и времени по умолчанию в текущей локали:

setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
echo strftime("%c"); // 17.11.2009 18:14:25


%x — представление даты в текущей локали:

setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
echo strftime("%x"); // 17.11.2009


%X — представление времени в текущей локали:

setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
echo strftime("%X"); // 18:14:25


%% — символ "%".
Функция  checkdate()  позволяет  проверить  корректность  введенной  даты.
Имеет следующий формат:
checkdate(<Месяц>, <День>, <Год>);
Функция  возвращает  true,  если  дата,  заданная  аргументами,  является  правильной. Дата считается правильной, если:
□ год в диапазоне от 1 до 32767 включительно;
□ месяц в диапазоне от 1 до 12 включительно;
□ день является допустимым номером дня для месяца, заданного аргументом <Месяц>:

if (checkdate(5, 32, 2008)) echo "Дата правильная";
else echo "Нет"; // Т.к. даты 32.05.2008 нет, выведет: Нет 





Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити