Php получение даты и времени. Как мне узнать текущую дату и время в PHP? Введение в ООП

Очевидно, что очень часто программистам приходится работать с датой и временем . Самый простой пример - это дата и время отправки сообщения на форуме. И, разумеется, такие вещи могут реализоваться на PHP , тем более, что возможностей по работе с датой и временем в PHP очень много.

Базовая функция, связанная с датой и временем в PHP , - это функция time() , которая возвращает количество секунд, прошедших с полуночи 01.01.1970 (зарождение эпохи Unix ):

echo time();
?>

Запустив данный скрипт, Вы узнаете, сколько секунд прошло с полуночи 01.01.1970 до момента вызова функции time() в Вашем скрипте.

Разумеется, помимо этой базовой функции, которая присутствует во всех языках программирования, где можно работать с датой и временем (по крайней мере, среди тех, которые я знаю), существует и другая функция, которая называется getdate() :

$datetime = getdate();
foreach ($datetime as $k=>$v)
echo "$k - $v
";
?>

Запустив данный скрипт, Вы увидите набор ключей в массиве и их соответствующих значений (заодно, повторили конструкцию foreach ). Думаю, что теперь для Вас не составит труда узнать любые данные, связанные с датой и временем . Например, чтобы вывести текущее время, необходимо написать следующий код:

$datetime = getdate();
echo $datetime["hours"].":".$datetime["minutes"].":".$datetime["seconds"];
?>

Также у функции getdate() существует необязательный параметр, который означает количество секунд, прошедших с полуночи 01.01.1970 . Он сделан для того, чтобы эта функция могла возвращать не только текущие время и дату, а, вообще говоря, любые:

$datetime = getdate(152353232);
echo $datetime["year"];
?>

В результате, Вы увидите 1974-ый год.

Также существует функция date() . Я рекомендую посмотреть описание по ней в справочнике, так как данная функция принимает весьма сложный параметр, который задаёт формат вывода даты. Элементов форматирования чуть больше 30-ти штук. И в примере ниже я приведу несколько из них, а остальные посмотрите в справочнике, потому что их запоминать не нужно, но ознакомиться с ними крайне желательно. А принцип их использования знать обязательно, и о нём следующий пример:

echo date("Сегодня d.m.Y H:i:s");
?>

В результате, Вы увидите что-то наподобие этого: "Сегодня 15.11.2010 21:44:24 ". Также у функции date() есть ещё второй необязательный параметр, задающий timestamp , как раз та величина, равная количеству секунд, прошедших с полуночи 01.01.1970 . Пример использования второго параметра:

echo date("Когда-то было d.m.Y H:i:s", 5393235329);
?>

Также существует функция gmdate() , которая является полным аналогом функции date() , но функция gmdate() показывает время не по часовому поясу сервера, на котором работает скрипт, а по Гринвичу . Очевидно, что с помощью этой функции надо сохранять всю информацию о дате и времени, которую видит пользователь, а при выводе нужно подстраиваться под часовой пояс каждого пользователя (в идеале, конечно):

echo gmdate("Сейчас на Гринвиче D M j H:i:s T Y")
?>

В результате, Вы увидите примерно следующее: "Mon Nov 15 18:52:45 GMT 2010 ". Разумеется, у Вас будет выведена уже другая дата, но в аналогичном формате. Также я настоятельно рекомендую залезть в справочник и просто ознакомиться с другими элементами даты и времени в PHP (я привёл только треть), так как функции date() и gmdate() - это самый простой и самый быстрый способ получить дату и время в практически любом формате.

Для работы с датами в PHP применяются различные функции. Мы начнем изучение с функции time .

Функция time, формат timestamp

Функция time возвращает разницу в секундах между 1-го января 1970 года и текущим моментом времени . Такое представление даты называется форматом timestamp .

Зачем нужен timestamp?

Время в формате timestamp используется для того, чтобы найти разницу между датами в секундах.

К примеру, у меня есть timestamp за 1-го января текущего года и timestamp за текущий момент времени . Я отниму один от другого и получу разницу между этими моментами в секундах . Поделю эту разницу на 60 и получу разницу в минутах (так как в минуте 60 секунд). Поделю еще на 60 - и получу разницу в часах. И так далее.

С помощью функции time мы можем получить только текущий момент времени. Чтобы получить timestamp за любую дату следует использовать функцию mktime :

Функция mktime

Функция mktime работает аналогично функции time , но, в отличие от нее, принимает параметры: mktime(час, минута, секунда, месяц, день, год) (обратите внимание на то, что месяц и день переставлены местами ). Посмотрите примеры работы:

Параметры можно опускать с конца . Если мы не напишем год (последний параметр) - то автоматически возьмется текущий год, если не напишем еще и день (предпоследний параметр) - то возьмется текущий день и текущий год. И так далее:

Решим типичную задачу на time и mktime . Пусть нам нужно найти разницу в секундах между текущим моментом времени и полуднем (12 часов, 0 минут, 0 секунд) 1-го февраля (февраль - это месяц номер 2) 2000 года:

Полученная разница в секундах будет выглядеть так: 612717139 (обновите страницу и это число поменяется).

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

Функция date

Функция date выводит текущие дату и время в заданном формате.

Формат задается управляющими командами (английскими буквами), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).

Команды (заглавные буквы отличаются от обычных , обратите внимание!):

  • U – количество секунд, прошедших с 1 января 1970 года (то есть timestamp).
  • z – номер дня от начала года.
  • Y – год, 4 цифры.
  • y - год, две цифры.
  • m – номер месяца (с нулем спереди).
  • n – номер месяца без нуля впереди.
  • d – номер дня в месяце, всегда две цифры (то есть первая может быть нулем).
  • j – номер дня в месяце без предваряющего нуля.
  • w – день недели (0 - воскресенье, 1 - понедельник и т.д.).
  • h – часы в 12-часовом формате.
  • H – часы в 24-часовом формате.
  • i – минуты.
  • s – секунды.
  • L – 1, если високосный год, 0, если не високосный.
  • W – порядковый номер недели года.
  • t – количество дней в указанном месяце.

Примеры работы с date:

Второй параметр функции date

Функция date имеет второй необязательный параметр , который принимает момент времени в формате timestamp. Если передать этот параметр, то функция date отформатирует не текущий момент времени, а тот, который передан вторым параметром. Этот timestamp можно получить, к примеру, через mktime (но не обязательно):

Этим можно воспользоваться, чтобы узнать номер дня недели за определенную дату - просто передадим ее вторым параметром с помощью функции mktime , а первым параметром поставим управляющий символ "w" :

Функция strtotime

Следующая полезная функция, которую мы разберем, называется strtotime.

Функция strtotime - это аналог функции mktime (тоже возвращает timestamp), только в отличие от нее принимает дату в более свободном формате.

К примеру, я могу передать ей строку "2025-12-31" и функция сама разберет, где тут год, где месяц, а где день, и вернет эту дату в формате timestamp.

Что можно делать еще: можно написать так - strtotime("now") - и мы получим текущий момент времени, или так - strtotime("next Monday") - и мы получим следующий понедельник (Monday по-английски "понедельник").

Все форматы можно посмотреть .

Примеры работы:

Следующий код вернет дату предыдущего понедельника:

Как добавить или отнять дату

Чтобы отнять или прибавить к дате определенный промежуток времени, следует пользоваться комбинацией из трех функций: date_create - она подготавливает дату к работе (дата должна быть в формате год-месяц-день) создавая так называемый объект дата , с которым производятся дальнейшие манипуляции, date_modify - она прибавляет или отнимает, date_format - она выводит получившуюся дату в заданном формате. Чтобы вникнуть в работу с этими функциями изучите примеры ниже.

Пример 1

Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 1 день и выведем в формате "день.месяц.год"

Результат выполнения кода:

Пример 2

Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 3 дня и выведем в формате "день.месяц.год"

Результат выполнения кода:

Пример 3

Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 3 дня и 1 месяц и выведем в формате "день.месяц.год"

Результат выполнения кода:

Пример 4

Давайте создадим объект с датой за 2025 год, 1 месяц, 1 день, затем отнимем от нее 1 день и выведем в формате "день.месяц.год"

Результат выполнения кода:

Что вам делать дальше:

Приступайте к решению задач по следующей ссылке: задачи к уроку .

Когда все решите - переходите к изучению новой темы.

Введение в ООП

  • Урок №
    новая вкладка с new.code.mu
    Введение
  • Урок №
    новая вкладка с new.code.mu
    Свойства
  • Урок №
    новая вкладка с new.code.mu
    Методы
  • Урок №
    новая вкладка с new.code.mu
    Свойства и $this
  • Урок №
    новая вкладка с new.code.mu
    Методы и $this
  • Урок №
    новая вкладка с new.code.mu
    public private
  • Урок №
    новая вкладка с new.code.mu
    Конструктор
  • Урок №
    новая вкладка с new.code.mu
    Геттеры сеттеры
  • Урок №
    новая вкладка с new.code.mu
    Свойства только для чтения
  • Урок №
    новая вкладка с new.code.mu
    Один класс - один файл
  • Урок №
    новая вкладка с new.code.mu
    Объекты в массиве
  • Урок №
    новая вкладка с new.code.mu
    Начальные значения свойств в конструкторе

(PHP 4, PHP 5, PHP 7)

date — Форматирует вывод системной даты/времени

Описание

String date (string $format [, int $timestamp = time() ])

Возвращает строку, отформатированную в соответствии с указанным шаблоном format . Используется метка времени, заданная аргументом timestamp , или текущее системное время, если timestamp не задан. Таким образом, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .

Список параметров

Шаблон результирующей строки (string ) с датой. См. параметры форматирования ниже. Также существует несколько предопределенных констант даты/времени , которые могут быть использованы вместо этих параметров. Например: DATE_RSS заменяет шаблон "D, d M Y H:i:s" .

В параметре format распознаются следующие символы
Символ в строке format Описание Пример возвращаемого значения
День --- ---
d День месяца, 2 цифры с ведущим нулём от 01 до 31
D Текстовое представление дня недели, 3 символа от Mon до Sun
j День месяца без ведущего нуля от 1 до 31
l (строчная "L") Полное наименование дня недели от Sunday до Saturday
N Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0) от 1 (понедельник) до 7 (воскресенье)
S Английский суффикс порядкового числительного дня месяца, 2 символа st , nd , rd или th . Применяется совместно с j
w Порядковый номер дня недели от 0 (воскресенье) до 6 (суббота)
z Порядковый номер дня в году (начиная с 0) От 0 до 365
Неделя --- ---
W Порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0) Например: 42 (42-я неделя года)
Месяц --- ---
F Полное наименование месяца, например January или March от January до December
m Порядковый номер месяца с ведущим нулём от 01 до 12
M Сокращенное наименование месяца, 3 символа от Jan до Dec
n Порядковый номер месяца без ведущего нуля от 1 до 12
t Количество дней в указанном месяце от 28 до 31
Год --- ---
L Признак високосного года 1 , если год високосный, иначе 0 .
o Номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y , кроме случая, когда номер недели ISO (W ) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0) Примеры: 1999 или 2003
Y Порядковый номер года, 4 цифры Примеры: 1999 , 2003
y Номер года, 2 цифры Примеры: 99 , 03
Время --- ---
a Ante meridiem (англ. "до полудня") или Post meridiem (англ. "после полудня") в нижнем регистре am или pm
A Ante meridiem или Post meridiem в верхнем регистре AM или PM
B Время в формате Интернет-времени (альтернативной системы отсчета времени суток) от 000 до 999
g Часы в 12-часовом формате без ведущего нуля от 1 до 12
G Часы в 24-часовом формате без ведущего нуля от 0 до 23
h Часы в 12-часовом формате с ведущим нулём от 01 до 12
H Часы в 24-часовом формате с ведущим нулём от 00 до 23
i Минуты с ведущим нулём от 00 до 59
s Секунды с ведущим нулём от 00 до 59
u Микросекунды (добавлено в версии PHP 5.2.2). Учтите, что date() всегда будет возвращать 000000 , т.к. она принимает целочисленный (integer ) параметр, тогда как DateTime::format() поддерживает микросекунды. Например: 654321
Временная зона --- ---
e Код шкалы временной зоны(добавлен в версии PHP 5.1.0) Примеры: UTC , GMT , Atlantic/Azores
I (заглавная i) Признак летнего времени 1 , если дата соответствует летнему времени, 0 в противном случае.
O Разница с временем по Гринвичу, в часах Например: +0200
P Разница с временем по Гринвичу с двоеточием между часами и минутами (добавлено в версии PHP 5.1.3) Например: +02:00
T Аббревиатура временной зоны Примеры: EST , MDT ...
Z Смещение временной зоны в секундах. Для временных зон, расположенных западнее UTC возвращаются отрицательные числа, а расположенных восточнее UTC - положительные. от -43200 до 50400
Полная дата/время --- ---
c Дата в формате стандарта ISO 8601 (добавлено в PHP 5) 2004-02-12T15:19:21+00:00
r Дата в формате » RFC 2822 Например: Thu, 21 Dec 2000 16:01:07 +0200
U Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) Смотрите также time()

Любые другие символы, встреченные в строке-шаблоне, будут выведены в результирующую строку без изменений. Z всегда возвращает 0 при использовании gmdate() .

Замечание :

Поскольку рассматриваемая функция принимает в качестве параметра временные метки типа integer , форматирующий символ u будет полезен только при использовании функции date_format() и пользовательских меток времени, созданных с помощью функции date_create() .

timestamp

Необязательный параметр timestamp представляет собой integer метку времени, по умолчанию равную текущему локальному времени, если timestamp не указан. Другими словами, значение по умолчанию равно результату функции time() .

Возвращаемые значения

Возвращает отформатированную строку с датой. При передаче нечислового значения в качестве параметра timestamp будет возвращено FALSE и вызвана ошибка уровня E_WARNING .

Список изменений

Версия Описание
5.1.0 Допустимым диапазоном дат для временных меток обычно являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Они соответствуют минимальному и максимальному значению 32-битного целого числа со знаком). Однако для PHP версии ниже 5.1.0 в некоторых операционных системах (например, Windows) этот диапазон был ограничен датами 01-01-1970 до 19-01-2038.
5.1.0

Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE .

5.1.1 Для стандартных форматов даты/времени существуют специальные константы , которые могут быть указаны в качестве параметра format .

Примеры

Пример #1 Примеры использования функции date()

// установка временной зоны по умолчанию. Доступно начиная с версии PHP 5.1
date_default_timezone_set ("UTC" );

// выведет примерно следующее: Monday
echo date ("l" );

// выведет примерно следующее: Monday 8th of August 2005 03:12:46 PM
echo date ("l jS \of F Y h:i:s A" );

// выведет: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date ("l" , mktime (0 , 0 , 0 , 7 , 1 , 2000 ));

/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: Wed, 25 Sep 2013 15:28:57 -0700
echo date (DATE_RFC2822 );

// выведет примерно следующее: 2000-07-01T00:00:00+00:00
echo date (DATE_ATOM , mktime (0 , 0 , 0 , 7 , 1 , 2000 ));
?>

Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.

Пример #2 Экранирование символов в функции date()

// выведет примерно следующее: Wednesday the 15th
echo date ("l \t\h\e jS" );
?>

Для вывода прошедших и будущих дат удобно использовать функции date() и mktime() .

Пример #3 Пример совместного использования функций date() и mktime()

$tomorrow = mktime (0 , 0 , 0 , date ("m" ) , date ("d" )+ 1 , date ("Y" ));
$lastmonth = mktime (0 , 0 , 0 , date ("m" )- 1 , date ("d" ), date ("Y" ));
$nextyear = mktime (0 , 0 , 0 , date ("m" ), date ("d" ), date ("Y" )+ 1 );
?>

Замечание :

Данный способ более надежен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.

Ещё несколько примеров использования функции date() . Важно отметить, что следует экранировать все символы, которые необходимо оставить без изменений. Это справедливо и для тех символов, которые в текущей версии PHP не распознаются как форматирующие, поскольку это может быть введено в следующих версиях. Для экранировании управляющих последовательностей (например, \n) следует использовать одинарные кавычки.

Пример #4 Форматирование с использованием date()

// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся во временной зоне Mountain Standard Time (MST)

$today = date ("F j, Y, g:i a" ); // March 10, 2001, 5:16 pm
$today = date ("m.d.y" ); // 03.10.01
$today = date ("j, n, Y" ); // 10, 3, 2001
$today = date ("Ymd" ); // 20010310
$today = date ("h-i-s, j-m-y, it is w Day" ); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date ("\i\t \i\s \t\h\e jS \d\a\y." ); // it is the 10th day.
$today = date ("D M j G:i:s T Y" ); // Sat Mar 10 17:16:18 MST 2001
$today = date ("H:m:s \m \i\s\ \m\o\n\t\h" ); // 17:03:18 m is month
$today = date ("H:i:s" ); // 17:16:18
$today = date ("Y-m-d H:i:s" ); // 2001-03-10 17:16:18 (формат MySQL DATETIME)
?>

Для форматирования дат на других языках используйте вместо date() функции setlocale() и strftime() .

Примечания

Замечание :

Для получения метки времени из строкового представления даты можно воспользоваться функцией strtotime() . Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (например, функция MySQL » UNIX_TIMESTAMP).

Рассмотрим, как работать с датами и временем в PHP.

Время в Unix -компьютерах

Для Unix-компьютеров начало отсчета времени –– полночь 1 января 1970 года. Любая дата вычисляется как количество секунд (обозначаемое timestamp –– метка времени), прошедших с 1.01.1970 года. Эти соглашения также используются в PHP. Например, мы хотим перейти на день вперед. Тогда нужно лишь добавить к текущему значению timestamp 60×60×24 секунд.

Такая схема учета времени существенно облегчает операции с датами. Например, если одно значение timestamp больше другого, первое значение соответствует более поздней дате, чем второе.

Единицы времени в сек

Получение текущего времени

В PHP для получения текущего значения timestamp надо вызвать функцию time() без параметров, например:

Многие PHP-функции для работы с датой и временем в качестве аргумента принимают значение timestamp. Например, функция date() возвращает отформатированную в соответствии с заданным форматом строку даты, например:

Создание timestamp по дате

Функция mktime () создаст timestamp, если указать час, минуту, секунду, день месяца, месяц и год:

Функция strtotime ()

Функция формирует timestamp для даты, указанной в виде фразы на английском, например April 1 или Friday.

Значение даты нужно задавать в формате ГГГГ-ММ-ДД. Если функция strtotime не может преобразовать дату, она возвращает false.

Примеры использования функции date()

Встроенная функция floor() используется для того, чтобы отбросить дробную часть результата.

Следующий текст при первом чтении можно пропустить

Форматы даты в базах данных MySQL

Формат timestamp в PHP несовместим с форматом timestamp в СУБД MySQL.

В MySQL есть три типа полей даты и времени: DATA (дата), TIME (время), DATETIME (дата и время). Также имеется специальный тип данных TIMESTAMP, который работает подобно DATETIME, но автоматически обновляется в соответствие с текущим временем при каждой вставке или обновлении записей таблицы.

Для преобразования timestamp в формате PHP в формат MySQL можно использовать такой код:

Date("Y-m-d H:i:s", $timestamp)

Например, можем использовать “2008-10-01 13:23:40” как дату и время.

Чтобы получить PHP-timestamp из запроса SELECT, надо использовать SQL- функцию UNIX_TIMESTAMP():

SELECT UNIX_TIMESTAMP(дата) FROM таблица

В MySQL есть много и других полезных функций для работы с датой и временем.

У Вас в браузере заблокирован JavaScript. Разрешите JavaScript для работы сайта!

Представление даты и времени

В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д.

PHP содержит множество функций для работы с датой и временем. Наиболее употребимыми являются:

  • time() - возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX).
  • getdate() - считывает информацию о дате и времени. Возвращает ассоциативный массив, содержащий информацию по заданному или по текущему (по умолчанию) времени. Массив содержит следующие элементы:

    Пример 1

    Использование getdate() $val) echo "$key = $val
    "; echo "
    Сегодня: $d.$d.$d"; ?>

    РЕЗУЛЬТАТ ПРИМЕРА 1:

    Seconds = 21 minutes = 4 hours = 12 mday = 10 wday = 4 mon = 11 year = 2005 yday = 313 weekday = Thursday month = November 0 = 1131613461 Сегодня: 10.11.2005

  • date() - форматирование даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. Строка формата может содержать следующие коды:
    a
    A Включено обозначение "AM" или "PM"
    d День месяца (01-31)
    D Сокращенное название дня недели (три буквы)
    F Полное название месяца
    g Часы (12-часовой формат без ведущих нулей)
    G Часы (24-часовой формат без ведущих нулей)
    h Часы (12-часовой формат)
    H Часы (24-часовой формат)
    i Минуты (00-59)
    j День месяца без ведущих нулей (1-31)
    l Полное название дня недели
    L Признак високосного года (0 или 1)
    m Месяц (01-12)
    M Сокращенное название месяца (три буквы)
    n Месяц (1-12)
    s Секунды (00-59)
    t Количество дней в данном месяце (от 28 до 31)
    U Абсолютное время
    w
    y Год (два разряда)
    Y Год (четыре разряда)
    z День года (0-365)
    Z Смещение часового пояса в секундах (от -43200 до 43200)

    Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту "\". Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку "n", то надо ввести "\\n", поскольку "\n" является символом новой строки.

    Пример 2

    Использование date()

    РЕЗУЛЬТАТ ПРИМЕРА 2:

    Сегодня: 10.11.05 13:03

  • mktime() - возвращает абсолютное время, которое затем можно использовать с функциями date() или getdate() . Принимает до шести целочисленных аргументов в следующем порядке:

    Часы
    минуты
    секунды
    месяц
    день месяца
    год

    Пример 3

    Использование mktime()

    РЕЗУЛЬТАТ ПРИМЕРА 3:

  • checkdate() - проверка правильности даты. Аргументы: месяц, день, год. Возвращает true , если дата правильная, т.е.
    месяц - целое число от 1 до 12;
    день - целое число, не превышающее общего количества дней в данном месяце. При этом високосные годы обрабатываются корректно;
    год - целое число от 1 до 32767.

    Например:

    If (!checkdate($month, 1, $year)) { $d = getdate(); $month = $d; $year = $d; }

    Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать mktime() для годов до 1902, а также следует использовать ее осторожно для годов до 1970.

  • strftime() - формирование локальной даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. При этом названия месяцев и дней недели извлекается из локали, выбранной с помощью функции Строка формата может содержать следующие коды:
    %a Сокращенное название дня недели
    %A Полное название дня недели
    %b Сокращенное название месяца
    %B Полное название месяца
    %c Предпочтительный формат даты и времени
    %C Номер века
    %d День месяца (1-31)
    %D То же, что и %m/%d/%y
    %e Месяц (1-12)
    %h То же, что и %b
    %H Часы (24-часовой формат)
    %I Часы (12-часовой формат)
    %j День года (0-365)
    %m Месяц (1-12)
    %M Минуты
    %n Символ новой строки
    %p Включено обозначение "am" или "pm"
    %r Время с использованием a.m./p.m.-нотации
    %R Время в 24-часовом формате
    %S Секунды (00-59)
    %t Символ табуляции
    %T То же, что и %H:%M:%S
    %u Номер дня недели (1 - понедельник, 7 - воскресенье)
    %U Номер недели. Отсчет начинается с первого воскресенья года
    %V Номер недели по ISO 8601:1988. Первая неделя должна иметь не менее четырех дней, а понедельник считается первым днем
    %W Номер недели. Отсчет начинается с первого понедельника года
    %w Номер дня недели (0 - воскресенье, 6 - суббота)
    %x Предпочтительный формат даты без времени
    %X Предпочтительный формат времени без даты
    %y Год (два разряда)
    %Y Год (четыре разряда)
    %Z Часовой пояс (имя или сокращение)
    %% Символ "%"

    Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.