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

  • 03.11.2019

Date(format, timestamp)

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

И параметры -

Формат - Обязательно. Определяет формат отметки времени

timestamp - (Необязательно) Указывает временную метку. По умолчанию текущая дата и время

Как получить простое свидание

Обязательный параметр формата функции date() указывает, как форматировать date (or time) .

Вот некоторые символы, которые обычно используются для дат:

  1. d - представляет день месяца (с 01 по 31)
  2. m - представляет месяц (от 01 до 12)
  3. Y - представляет год (из четырех цифр)
  4. l (нижний регистр "L") - представляет день недели

Другие символы, такие как "/", ".", or "-" также могут быть вставлены между символами для добавления дополнительного форматирования.

Пример ниже форматирует сегодняшнюю дату тремя различными способами:

"; echo "Today is " . date("Y.m.d") . "
"; echo "Today is " . date("Y-m-d") . "
"; echo "Today is " . date("l"); ?>

Несколько полезных ссылок

  • gmdate() - форматирует дату/время по Гринвичу /UTC
  • idate() - форматирует местное время/дату как целое число
  • getdate() - получает информацию о дате/времени
  • getlastmod() - Получает время последней модификации страницы
  • mktime() - получает метку времени Unix для даты
  • strftime() - форматирует местное время/дату в соответствии с настройками локали

Очевидно, что очень часто программистам приходится работать с датой и временем . Самый простой пример - это дата и время отправки сообщения на форуме. И, разумеется, такие вещи могут реализоваться на 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 день и выведем в формате "день.месяц.год"

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

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

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

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

Для вывода времени или даты в пользовательском формате существует функция date.

В этом примере на экран выводится текущяя дата в формате день/месяц/год в виде чисел. Прочитав эту статью до конца вы сможете выводить на экран текущую дату и время в любом формате.
Данная функция позволяет выводить не только текущую дату и время, но и преобразовывать метку времени в заданный формат. Метка времени - это число секунд, прошедших с момента основания linux. Это число можно получить, используя функцию time(). Метка времени в функции date является необязательным параметром. Что бы получить формат, который вам нужен, вы можете использовать специальные модификаторы в первом параметре. Их достаточно много.

Символ в строке format Описание Пример возвращаемого значения
a am или pm в нижнем регистре am, pm
A AM или PM в верхнем регистре AM, PM
B Время в стадарте Swatch Internet От 000 до 999
c Дата в формате ISO 8601 (добавлено в PHP 5) 2005-06-11T11:11:11+00:00
d День месяца, 2 цифры с ведущими нулями от 01 до 31
D Сокращенное наименование дня недели, 3 символа от Mon до Sun
F Полное наименование месяца от January до December
g Часы в 12-часовом формате без ведущих нулей От 1 до 12
G Часы в 24-часовом формате без ведущих нулей От 0 до 23
h Часы в 12-часовом формате с ведущими нулями От 01 до 12
H Часы в 24-часовом формате с ведущими нулями От 00 до 23
i Минуты с ведущими нулями 00 to 59
I (заглавная i) Признак летнего времени 1, если дата соответствует летнему времени, иначе 0 otherwise.
j День месяца без ведущих нулей От 1 до 31
l (строчная "L") Полное наименование дня недели От Sunday до Saturday
L Признак високосного года 1, если год високосный, иначе 0.
m Порядковый номер месяца с ведущими нулями От 01 до 12
M Сокращенное наименование месяца, 3 символа От Jan до Dec
n Порядковый номер месяца без ведущих нулей От 1 до 12
O Разница с временем по Гринвичу в часах +0200
r Дата в формате RFC 2822 Thu, 28 Jan 2011 15:11:14 +0200
s Секунды с ведущими нулями От 00 до 59
S Английский суффикс порядкового числительного дня месяца, 2 символа st, nd, rd или th. Применяется совместно с j
t Количество дней в месяце От 28 до 31
T Временная зона на сервере Примеры: EST, MDT ...
U Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) 1356361196
w Порядковый номер дня недели От 0 (воскресенье) до 6 (суббота)
W Порядковый номер недели года по ISO-8601, первый день недели - понедельник (добавлено в PHP 4.1.0) Например: 42 (42-я неделя года)
Y Порядковый номер года, 4 цифры Примеры: 1986, 2012
y Номер года, 2 цифры Примеры: 86, 12
z Порядковый номер дня в году (нумерация с 0) От 0 до 365
Z Смещение временной зоны в секундах. Для временных зон западнее UTC это отрицательное число, восточнее UTC - положительное. От -43200 до 43200

 Если этот сайт оказался вам полезен, вы можете помочь в его развитии, поставив

Среди разнообразных задач программирования, различные манипуляции со значениями даты и времени встречаются достаточно часто. Редкая автоматизированная система, база данных может обойтись без сохранения информации о времени того или иного процесса. Помимо простейшего добавления даты в запись базы данных или отображения этой даты, встречаются множество задач вывода этих дат в различном виде, проверки соответствия текущего времени с заданным таймером, вычисление срока между двумя датами и многое другое.

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

В PHP работа с датой чаще всего сталкивается с UNIX TIMESTAMP. Здесь время хранится целым числом. Исчисление времени начинается с 1 января 1970 года. Поэтому, например, дата и время 11.12.2014 19:40:00, будет представлено числом 1418316000. Эта цифра показывает, сколько секунд прошло с нулевой даты 1 января 1970 года, названой Эпохой Unix.

Пример php-страницы, предоставляющий возможности преобразования данных представлен на сайте в разделе программ программой "Преобразование формата даты и времени" . Здесь можно сформировать нужную дату в формат UNIX TIMESTAMP, а так же привести этот формат в стандартный, понятный человеку вид.

Получение текущего времени и даты в PHP

Для получения текущего времени сервера используется функция

int time(void)

которая как раз вернет значение в формате unix timestamp.

echo time(); // вывод текущего времени в формате unix timestamp

На первый взгляд не очень удобный формат для человека, но, как известно, чем проще представление данных, тем быстрее выполняется обработка этих значений компьютером. Кроме того, хранение числа в базе данных намного экономичнее, чем какой-либо специальный формат. Так же, PHP работает со временем одинаково и на Unix и на Windows платформе, что обеспечивает возможность использовать код на любой из этих платформ.

Преобразование формата даты и времени в PHP

Простейший механизм, позволяющий преобразовать числовое значение даты на более понятные значения, предоставляется функцией:

array getdate()

Она возвращает ассоциативный массив, содержащий информацию о дате. Если параметр timestamp не указан, будут возвращены сведения о текущем времени. Этот массив содержит следующие значения:

Полученный массив, позволяет вывести значения нужном виде:

$date = 1418372345;
$date_mas = getdate($date);
echo $date_mas["mday" ] . " . " . $date_mas["mon" ] . " . " . $date_mas["year" ]; // 12.12.2014


Так же для преобразования формата даты и времени можно воспользоваться функцией:

string date(string $template [, int $unix_timestamp])

Она предназначена для получения текущей даты unix timestamp в нужном формате. Строковый параметр $template определяет формат вывода. Параметром $unix_timestamp можно задать, с каким значением времени производится работа. Он необязательный, поэтому, если его не указать, будет использоваться текущая дата и время.

Формат задается следующими значениями:

a "до" и "после" полудня: "am" или "pm"
A "до" и "после" полудня заглавными буквами: "AM" или "PM"
d день месяца 2 цифрами (если меньше 10, на первом месте ноль) (от 01 до 31)
D день недели 3 буквами. Например, "Mon" (понедельник)
j день месяца, 1-2 цифры без начальных нулей (от 1 до 31)
F название месяца. Например, "January"
h час, 12-часовой формат (от 01 до 12)
H час, 24-часовой формат (от 00 до 23)
g час, 12-часовой формат без нулей (от 1 до 12)
G час, 24-часовой формат без нулей (от 0 до 23)
i минуты (от 00 до 59)
I (заглавная i) 1, если действует переход на летнее время, иначе 0
L 1, если год високосный, или 0 если не високосный
B время в формате Интернет-времени (альтернативной системы отсчета времени суток) (от 000 до 999)
T временная зона компьютера. Например, MDT
l (строчная L) день недели. Например, "Monday"
m месяц, две цифры с нулями (от 01 до 12)
n месяц, одна-две цифры без нулей (от 1 до 12)
M сокращенное наименование месяца. Например, "Jan"
t число дней в указанном месяце (от 28 до 31)
s секунды (от 0 до 59)
S англоязычный порядковый суффикс числа из двух букв ("st", "nd", "rd" или "th")
U целое число секунд, прошедших с момента начала эпохи UNIX
y год, цифровой, 2 цифры (14)
Y год, цифровой, 4 цифры (2014)
z порядковое число дня в году (от 0 до 365)
Z смешение временной зоны в секундах (от -43200 до 43200)
N порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье) в соответствии со стандартом ISO-8601, (добавлен в версии PHP 5.1.0)
w порядковый номер дня недели от 0 (воскресенье) до 6 (суббота)
W порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0)
o номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y, кроме случая, когда номер недели ISO (W) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0)
e код шкалы временной зоны. Например: UTC, GMT, Atlantic/Azores (добавлен в версии PHP 5.1.0)
O разница с временем по Гринвичу, в часах. Например: +0200
P разница с временем по Гринвичу с двоеточием между часами и минутами. Например: +02:00 (добавлено в версии PHP 5.1.3)
c дата в формате стандарта ISO 8601. Например, 2014-12-12T15:19:21+00:00 (добавлено в PHP 5)
r дата в формате » RFC 2822. Например: Thu, 21 Dec 2000 16:01:07 +0200
U количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT)

Как видно из списка, с помощью этой функции можно получить очень много полезных данных о дате. Например:

$date = 1418372345; // исходное дата и время 12.12.2014 11:19:05

echo date("d.m.Y" , $date); // 12.12.2014 (дата)
echo date("H:i:s" , $date); // 11:19:05 (время)
echo date("H:i" , $date); // 11:19 (время)
echo date("t" , $date); // 31 (число дней в месяце)
echo date("z" , $date); // 345 (порядковый номер дня в году)
echo date("l dS \of F Y h:i:s A" , $date); // Friday 12th of December 2014 11:19:05 AM

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

echo date("Сегодня z-й день Y-го года" , $date); // Сегодня 345-й день 2014-го года

Преобразование даты и времени в формат timestamp

Для обратного преобразования даты из стандартного формата в числовое значение timestamp применяется функция:

int mktime(]]]]]])

Функция mktime() возвращает значение времени Unix, соответствующую дате и времени, заданным аргументами. Например:

$my_date = mktime (10, 30, 0, 12, 12, 2014);

Следует внимательно относится к порядку аргументов функции: часы, минуты, секунды, месяц, день, год.

Кроме простого формирования значения даты в timestamp, функцию mktime() можно использовать для арифметически вычисления с датами. Для этого просто можно ввести необходимые аргументы. Например, если указать 14 месяц, то в итоговом значении, месяц будет 2-й, а значение года увеличится на единицу:

$my_day = 12;
$my_month = 12;
$my_year = 2014;

$new_date = mktime(0, 0, 0, $my_month + 5, $my_day, $my_year);

echo date("d.m.Y" , $new_date); // 12.05.2015 (дата)

Аналогично можно поступать и с другими параметрами.

Проверка корректности даты в PHP

При работе с датами, особенно при формировании даты предложенной выше функцией mktime() необходимо учитывать корректность вводимой даты. Для этого в PHP используется функция:

bool checkdate(int month, int day, int year)

Возвращает true если дата, заданная аргументами, является правильной; иначе возвращает false. Дата считается правильной, если:

Год в диапазоне от 1 до 32767;

Месяц в диапазоне от 1 до 12;

День для заданного месяца с учетом високосного года указаны правильно.

Пример проверки даты:

$my_day = 32;
$my_month = 12;
$my_year = 2014;

if (!checkdate($my_month, $my_day, $my_year))
echo "Ошибка: дата указана некорректно" ;