Php получить текущее время дату. Используем функцию date() в PHP. Представление даты и времени

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 применяются различные функции. Мы начнем изучение с функции 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 день и выведем в формате "день.месяц.год"

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

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

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

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

У Вас в браузере заблокирован 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 Часовой пояс (имя или сокращение)
    %% Символ "%"

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

В этом уроке мы рассмотрим функцию date().

PHP функция date() используется для форматирования времени и/или даты.

Синтаксис

Синтаксис вызова функции:

Date($format, $timestamp);

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

В параметре 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) Например: 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()

Рассмотрим примеры. Следующий код:

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

2009/05/11 2009.05.11 2009-05-11

PHP Date() — Добавляем метку времени

Функция mktime() возвращает Unix метку времени для указанной даты. Эта метка времени содержит количество секунд начиная с Январь 1 1970 00:00:00 GMT до указанной даты. Синтаксис для mktime():

Mktime(hour,minute,second,month,day,year,is_dst);

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

Данный код выведет:

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