W3docs

date()

Date and time functions are essential in any programming language, including PHP. In this article, we will explore the various date and time functions in PHP

Введение

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

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

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

Функция date()

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

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

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

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

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

Функция time()

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

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

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

<?php
    echo time();
?>

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

Функция strtotime()

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

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

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

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

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

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

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

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

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

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

Пример использования функции strtotime() для добавления одного дня к дате в 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
    $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
    $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
    date_default_timezone_set("America/New_York");
?>

Класс DateTimeZone

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

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

Пример PHP DateTimeZone()

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

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

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

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

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

<?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?