Функции для работы с датой и временем. Получение текущей даты, даты создания файла и проверка корректности введенной даты
Для работы с датами в 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
Выведем текущую дату и время таким образом, чтобы день недели и месяц были написаны по-русски (листинг 5.15).
Листинг 5.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;
Код, представленный в листинге 5.15, выведет
Сегодня
понедельник 16 ноября 2009 00:37:08
16.11.09
Если в функции date() указан второй параметр, то дата будет не текущая, а соответствующая значению из второго параметра. Например, в функцию можно передать количество секунд, прошедших с 1 января 1970 г., и полу- чить любое другое форматирование даты.
$date = date("Дата d-m-Y", 1180986651);
echo $date;
// Выведет Дата 04-06-2024
Или можно получить дату создания файла:
$date = date("Дата d-m-Y", filectime("index.php"));
echo $date;
// Выведет Дата 20-06-2024
Функция 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.2024 18:14:25
? %x — представление даты в текущей локали:
setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
echo strftime("%x"); // 17.11.2024
? %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.2024 нет, выведет: Нет
Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)