Перейти к содержимому

date()

Введение

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

Работа с датами в PHP

PHP предоставляет множество встроенных функций для работы с датами, включая date(), time() и strtotime(). Эти функции позволяют форматировать и изменять даты разными способами, в том числе менять формат даты, добавлять или вычитать время из даты и многое другое.

Функция date()

Функция date() используется для форматирования даты в PHP. Она принимает строку формата в качестве первого параметра и необязательную временную метку в качестве второго параметра.

Вот пример использования функции date() для отображения текущей даты в формате «Месяц День, Год»:

Функция date() в PHP

php
<?php
    echo date("F j, Y");
?>

Это выведет текущую дату в формате «Месяц День, Год», например: «March 3, 2023».

Функция time()

Функция time() возвращает текущую Unix-временную метку, то есть количество секунд, прошедших с 1 января 1970 года.

Вот пример использования функции time() для получения текущей временной метки:

Функция time() в PHP

php
<?php
    echo time();
?>

Это выведет текущую Unix-временную метку, которая представляет собой длинную строку чисел, например «1646369616».

Функция strtotime()

Функция strtotime() используется для преобразования строки даты в Unix-временную метку. Она принимает строку даты в качестве параметра и возвращает Unix-временную метку для этой даты.

Вот пример использования функции strtotime() для преобразования строки даты в Unix-временную метку:

Функция strtotime() в PHP

php
<?php
    $dateString = "March 3, 2023";
    $timestamp = strtotime($dateString);
    echo $timestamp;
?>

Это выведет Unix-временную метку для 3 марта 2023 года, которая равна «1677801600».

Изменение дат в PHP

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

Функция strtotime() (снова)

Функция strtotime() используется не только для преобразования строк дат в Unix-временные метки. Её также можно использовать для добавления или вычитания времени из даты.

Вот пример использования функции strtotime() для добавления одного дня к дате:

Пример использования функции strtotime() для добавления одного дня к дате в PHP

php
<?php
    $dateString = "March 3, 2023";
    $timestamp = strtotime($dateString);
    $newTimestamp = strtotime("+1 day", $timestamp);
    echo date("F j, Y", $newTimestamp);
?>

Это выведет дату на один день позже 3 марта 2023 года, то есть «March 4, 2023».

Методы DateTime::add() и DateTime::sub()

Методы DateTime::add() и DateTime::sub() используются для добавления или вычитания времени из объекта DateTime в PHP. В качестве параметра они принимают объект DateInterval, который задаёт количество времени для добавления или вычитания.

Вот пример использования метода DateTime::add() для добавления одного дня к объекту DateTime:

Методы DateTime::add() и DateTime::sub()

php
<?php
    $date = new DateTime("March 3, 2023");
    $date->add(new DateInterval("P1D"));
    echo $date->format("F j, Y");
?>

Это выведет дату на один день позже 3 марта 2023 года, то есть «March 4, 2023».

Сравнение дат в PHP

PHP также предоставляет функции для сравнения дат. Функцию strtotime() можно использовать для преобразования двух строк дат в Unix-временные метки, которые затем можно сравнивать с помощью стандартных операторов сравнения, таких как < и >.

Вот пример использования функции strtotime() для сравнения двух дат:

Пример использования функции strtotime() для сравнения двух дат в PHP

php
<?php
    $date1 = "March 3, 2023";
    $date2 = "March 4, 2023";
    if (strtotime($date1) < strtotime($date2)) {
        echo "Date 1 is earlier than Date 2";
    } else {
        echo "Date 1 is later than or equal to Date 2";
    }
?>

Это выведет «Date 1 is earlier than Date 2».

Часовые пояса и переход на летнее время

Одна из сложностей работы с датами в PHP — это работа с часовыми поясами и переходом на летнее время. PHP предоставляет функции для работы с часовыми поясами, включая date_default_timezone_set() и DateTimeZone.

Функция date_default_timezone_set()

Функция date_default_timezone_set() используется для установки часового пояса по умолчанию для функций даты и времени в PHP. Она принимает название часового пояса в качестве параметра.

Вот пример использования функции date_default_timezone_set() для установки часового пояса на «America/New_York»:

Функция date_default_timezone_set() в PHP

php
<?php
    date_default_timezone_set("America/New_York");
?>

Класс DateTimeZone

Класс DateTimeZone используется для создания объекта часового пояса в PHP. Он принимает название часового пояса в качестве параметра.

Вот пример создания объекта DateTimeZone для часового пояса «America/New_York»:

Пример PHP DateTimeZone()

php
<?php
    $timezone = new DateTimeZone("America/New_York");
?>

Работа с переходом на летнее время

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

Вот пример использования функции date() со спецификатором формата I для определения, действует ли летнее время:

Пример PHP date() со спецификатором формата "I"

php
<?php
    if (date("I") == 1) {
        echo "Daylight saving time is in effect";
    } else {
        echo "Daylight saving time is not in effect";
    }
?>

Это выведет, действует ли летнее время.

Заключение

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

Практика

Какие форматы являются допустимыми и могут использоваться функцией date() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.