Как мне узнать текущую дату и время в PHP? Используем функцию date() в PHP Что такое формат d m y

Жаропонижающие средства для детей назначаются педиатром. Но бывают ситуации неотложной помощи при лихорадке, когда ребенку нужно дать лекарство немедленно. Тогда родители берут на себя ответственность и применяют жаропонижающие препараты. Что разрешено давать детям грудного возраста? Чем можно сбить температуру у детей постарше? Какие лекарства самые безопасные?

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.

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

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

Дата и время представлялись с помощью DateTime объекта.

Часовой пояс представлялся с помощью DateTimeZone.

DateInterval объекты представляют интервал времени. Например, когда нам необходимо отсчитать 2 дня или часа от текущего времени. Этот объект не основывается на конкретном времени, это просто интервал.

DatePeriod представляет период между двумя датами.

Теперь мы рассмотрим реальное применение вышесказанного.

Date() и DateTime

Если нам нужно получить дату, мы используем date() , это просто и работает. Всего лишь передать желаемый формат даты. Только это не совсем удобно на практике, например, когда необходимо изменять время в зависимости от временной зоны.

DateTime делает больше, нежели просто возвращает дату. Перед тем как это использовать необходимо инициировать новый DateTime объект. Делается это как и в любом другом PHP классе:

$date = new DateTime();

Конструктор DateTime принимает строку как параметр, на данный момент строка пустая, установлена текущая дата и время по умолчанию.

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

New DateTime("2013, March 24") //DateTime отобразит 24 марта 2013 new DateTime("2013-03-24") //DateTime отобразит 24 марта 2013 new DateTime("+2 days") // 2 день начиная от сегодняшнего new DateTime("tomorrow") // завтрашний день

Полный список доступных форматов можно найти в официальной документации .

Если не найдете подходящий формат времени, вы можете определить его сами с помощью DateTime::createFromFormat .

Теперь, когда мы держим в руках готовый DateTime объект, мы можем делать много интересных вещей.

Временной штамп Unix

$date->getTimestamp();

Изменение Даты и Времени

$date->setDate(2013, 12, 30); //гггг, мм, дд установит определенную дату $date->setTime(12, 3, 20); //чч, мм, сс (опционально) установит время $date->modify("tomorrow"); // завтра можно задать даже так! $date->setTimestamp(1364798550); // установка даты и времени используя unix штамп

Стоит заметить, если передаем параметры выше допустимых, PHP автоматически изменит их в соответствии. Например, $date->setDate(2013, 12, 35); возвратит 2014-01-04, то же самое и для время.

Работа с несколькими датами

Теперь, когда вы осведомлены с DateTime, ваши приложения будут сложены проще и грамотнее. Надеемся теперь вы любите даты более чем когда либо.

Сейчас мы рассмотрим работу с некоторыми математическими вычислениями. Скажем, нам необходимо сравнить две даты рождения:

$sheldon = new DateTime("May 20th, 1980"); $neo = new DateTime("March 11th, 1962"); if ($sheldon > $neo) echo "Sheldon моложе нежели neo";

Это можно сделать с помощью другого сценария. Вот так:

$diff = $neo->diff($sheldon);

Вызов функции diff возвращает DateInterval объект. Вот как он выглядит:

DateInterval Object ([y] => 18 [m] => 2 [d] => 9 [h] => 0 [i] => 0 [s] => 0 => 0 => 6645)

Это public свойства. Вы можете генерировать интересные штуки на основании этого объекта.

//Neo старше на 18 лет и 2 месяца $diff->format("Neo старше на %Y лет и %m месяцев");

Самое полезное, то что можно применить DateInterval объект к другому аналогичному DateInterval объекту.

$neo->add($diff); //день рождения neo изменен на sheldon

Заметьте: Модификация DateTime, например как в случае высше, не возвращает новый объект, просто видоизменяет прежний. Держите это во внимании когда работаете со своим приложением. PHP 5.5 представил новый класс, который возвращает новый объект после модификации.

Diff это не единственный способ получить объект интервала. Так как это класс, новый объект может быть создан как обычно:

$new_diff = new DateInterval("P2Y");

Передается в конструктор количество лет, месяцев, дней и т.д. Более информации можно найти в документации о конструкторе .

Работа с часовыми поясами

Когда создаем новый DateTime объект, второй аргумент определяет часовой пояс. Если мы упустим этот аргумент, временная зона будет взята с php.ini date.timezone. Вы можете изменять это на лету с помощью вызова date_default_timezone_set :

Date_default_timezone_set("America/New_York"); new DateTime("today"); //datetime объект изменен на часовой пояс Нью Йорка

Вы также можете изменять часовой пояс с помощью объекта DateTimeZone:

$timezone = new DateTimeZone("America/New_York"); $sheldon->setTimezone($timezone); //день рождения Шэлдона по времени в New York

Можно определять временную зону в процессе создания DateTime объекта:

$sheldon = new DateTime("May 20th, 1980", $timezone);

Важно помнить, что setTimezone изменяет оригинальный объект DateTime. Мы запрашиваем изменить данную дату в соответствии с временной зоной. С другой стороны, в последнем примере, мы передали временную зону в конструктор, говоря: «Дата которую я создаю, находится в этой временной зоне».

Список доступных часовых поясов доступен в документации .

Периоды даты и времени

Думаю, официальная документация предоставляет наиболее понятные объяснения:

Позволяет перемещаться в заданном временном интервале на равные промежутки времени.

DatePeriod генерирует коллекцию времен в определенном диапазоне, через заданные интервалы. Нам нужно передать стартовую дату, интервал и конечную дату. На каждый интервал создается новый объект DateTime.

Предположим, что мы хотим получить все дни рождения Шэлдона, начиная с его рождения:

//так как дни рождения раз в год, интервал будет один год $interval = new DateInterval("P1Y"); //третий аргумент конечная дата, new DateTime() == сейчас $period = new DatePeriod($sheldon, $interval, new DateTime()); foreach($period as $dt) { //DateTime объект echo $dt->format("Y-m-d - D"), "\n"; }

Результат будет следующим:

1981-05-20 - Wed 1982-05-20 - Thu 1983-05-20 - Fri 1984-05-20 - Sun 1985-05-20 - Mon 1986-05-20 - Tue ...

Сейчас периоды вмещают стартовую дату также. Можно исключить ее, передав четвертый аргумент в конструктор:

$period = new DatePeriod($sheldon, $interval, new DateTime(), DatePeriod::EXCLUDE_START_DATE);

Давайте посмотрим, сколько раз Neo праздновал день рождение еще до рождения Шэлдона:

$bdays = new DatePeriod($neo, $interval, $sheldon, DatePeriod::EXCLUDE_START_DATE); echo iterator_count($bdays);

Расширение

Все классы, которые мы рассмотрели сегодня, могут быть расширены с помощью собственных методов. Самый распространенный способ создавать функцию __toString , которая позволит отображать DateTime объект без вызова format.

Что еще?

Как видите, это расширение даты и времени предлагает большие возможности. В последних версиях PHP есть новые классы, достаточно взглянуть в документацию.

У вас есть хорошие примеры использования даты и времени в PHP? Поделитесь ими в комментариях ниже! Всем спасибо за чтение.


Для работы с датами в 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
    Начальные значения свойств в конструкторе
Поддержите проект — поделитесь ссылкой, спасибо!
Читайте также
Флешка (жесткий диск) просит форматирования, а на ней были файлы (данные) Флешка (жесткий диск) просит форматирования, а на ней были файлы (данные) Ищем потерянное мобильное устройство: как найти телефон по imei через спутник бесплатно Ищем потерянное мобильное устройство: как найти телефон по imei через спутник бесплатно Орион пв 700 оторвалась кнопка пуск заряд Орион пв 700 оторвалась кнопка пуск заряд