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

Функции даты и времени в PHP

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

  • date(): Эта функция возвращает текущую дату и время в указанном формате.
  • time(): возвращает текущую метку времени Unix (количество секунд с 1 января 1970 года).
  • Класс DateTime: объектно-ориентированный подход к манипулированию датой и временем, обеспечивающий большую гибкость и функциональность.

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

В PHP за варианты форматирования  даты отвечают функция date()и метод DateTime::format.  В качестве параметров вы можете передать один или несколько символов, которые сформируют строковое представление даты и/или времени.

Некоторые часто используемые символы формата даты и времени в PHP:

  • 'Y'  четырехзначный год.
  • 'm' - двузначный месяц.
  • 'd' - двузначный день месяца.
  • 'j' -  день месяца без ведущего нуля
  • 'H' - двузначный час в 24-часовом формате.
  • 'i' - двузначные минуты.
  • 's' - двузначные секунды.
  • 'l' - полное наименование дня недели (От Sunday до Saturday)
  • 'D' - текстовое представление дня недели, 3 символа (От Mon до Sun)
  • 'w' - порядковый номер дня недели (от 0 (воскресенье) до 6 (суббота))
  • 'F' - полное наименование месяца на английском, например, January или March
  • 'M' - сокращённое наименование месяца, 3 символа (от Jan до Dec)

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

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

Способ 1. Использование функции date()

Тут все просто. Вызываем функцию date(), передавая параметры с разделителями, которые нам удобны - точки, слэши, дефисы:

Вывод: 12.01.2024 или 12/01/2024 или 12-01-2024.

Для вывода времени и даты со временем:

Вывод: 12:04:27 и 12.01.2024 12:04:27

На самом деле можно уже остановиться на этом способе и больше ничего не использовать.

Способ 1а. Использование функций mktime() и date()

Чуть более сложный способ - определяем количество миллисекунд, прошедших с 00:00:00 1 января 1970 года (базовая дата для отсчета времени) до текущей даты, а затем выводим дату в нужном формате:

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

Работа с временными метками Unix

Функция time()возвращает текущую временную метку Unix. Это значение можно использовать date()для форматирования отметки времени:

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

Способ 2. Использование класса DateTime

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

Этот метод обеспечивает большую гибкость, например, легко манипулировать датой и временем (добавление или вычитание времени) и обработку часовых поясов.

Обработка часовых поясов при выводе даты в PHP

Точкой отсчета времени является время по Гринвичу, или UTC (Всемирное Координированное Время). Если вам нужно узнать временную зону какого-либо города, вы можете воспользоваться сайтом zeitverschiebung, введя название этого города.

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

Сравните данные с другой временной зоной:

Для Германии, например, код будет таким:

Класс DateTime также позволяет обрабатывать определенные часовые пояса. Например, для Индии мы можем написать так:

Конвертировать дату, время, часовой пояс

Например, вы сохранили дату (2018-01-11 01:17:23) в часовом поясе UTC в вашей базе данных. Теперь преобразуйте этот DateTime в часовой пояс EST (Северноамериканское Восточное Стандартное Время).

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

Все часовые пояса можно найти здесь.

Надеюсь, какой-либо из способов вам пригодился. О том, как преобразовать дату в PHP, читайте в отдельной статье.

Автор: Админ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *