PHP Учебник

PHP Старт Введение в PHP Установка PHP Синтаксис PHP Комментарии в PHP Переменные PHP PHP Echo / Print Типы данных PHP Строки PHP Числа PHP Математика в PHP Константы PHP Операторы PHP PHP If...Else...Elseif PHP Switch Циклы в PHP Функции PHP Массивы PHP PHP Суперглобальные PHP RegEx

PHP Формы

Обработка форм PHP Валидация форм PHP Обязательные поля Валидация URL/E-mail Полная форма PHP

PHP Продвинутый

PHP Дата и время PHP Include/Require PHP Работа с файлами Открытие/Чтение файлов Создание/Запись файлов PHP Загрузка файлов Файлы cookie PHP Сессии PHP Фильтры PHP Расширенные фильтры PHP Функция Callback PHP JSON PHP Исключения

PHP OOP

Что такое ООП в PHP Классы/Объекты PHP Цепочки методов PHP Конструктор PHP Деструктор PHP Модификаторы доступа Наследование в PHP Константы класса PHP Подсказка типов PHP Подсказка интерфейсов Абстрактные классы PHP PHP Интерфейсы PHP Полиформизм PHP Трейты Статические методы PHP Статические свойства PHP Пространства имен PHP Итерируемые объекты

База данных MySQL

База данных MySQL Подключение к MySQL Создание БД MySQL Создание таблицы MySQL Вставка данных MySQL Получить ID MySQL Подготовленные операторы PHP MySQL Получение данных MySQL Предложение WHERE Предложение ORDER BY Обновление данных MySQL Удаление данных БД MySQL Limit Data

PHP XML

Парсеры PHP XML Парсер PHP SimpleXML Получить PHP SimpleXML PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Введение AJAX PHP AJAX База Данных AJAX XML AJAX Живой поиск AJAX Опрос

PHP Примеры

PHP Примеры Практика ООП PHP PHP квиз-тест Упражнения Базовый PHP Упражнения Алгоритмы Упражнения Массивы Упражнения Цикл for Упражнения Функции Регулярные выражения Упражнения Дата PHP Упражнения Строки PHP Математика PHP Упражнения Формы PHP Упражнения Классы PHP Упражнения JSON PHP PHP Задачник


PHP | Дата и время




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


Функция date() выводит текущие дату и время в заданном формате. Также функция может конвертировать формат отметки времени (временная метка, метка времени или timestamp) в удобочитаемый формат.

Синтаксис

date(format,timestamp)

Параметры функции date():

format
Обязательный. Задает формат метки времени
timestamp
Необязательный. Задает отметку времени. По умолчанию текущая дата и время

Функция date() возвращает строку, которая отформатирована в соответствии с указанным шаблоном format. Параметр timestamp задает метку времени. Если timestamp не задан, тогда используется текущее системное время.

Примечание: Отметка времени — это последовательность символов, обозначающая дату и / или время, когда произошло определенное событие.

Обязательный параметр format функции date() указывает, как форматировать дату (или время). Формат задается управляющими командами (латиницей), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).

Ниже представлена таблица с расшифровкой некоторых символов в строке format:

Символ в строке format Описание Пример возвращаемого значения
День
d День месяца с 2-мя цифрами от 01 до 31
D День недели в текстовом формате, 3 символа от Mon до Sun
z Порядковый номер дня в году (начиная с 0) От 0 до 365
Месяц
F Полное название месяца, например, January или March от January до December
m Порядковый номер месяца, 2 цифры от 01 до 12
M Сокращенное название месяца, 3 символа от Jan до Dec
Год
Y Порядковый номер года, 4 цифры Примеры: 1999, 2019
y Порядковый номер года, 2 цифры Примеры: 99, 19
Время
a Ante meridiem (лат. «до полудня») или Post meridiem (лат. «после полудня») в нижнем регистре am или pm
A Ante meridiem или Post meridiem в верхнем регистре AM или PM
g Часы в 12-часовом формате от 1 до 12
G Часы в 24-часовом формате от 0 до 23
h Часы в 12-часовом формате от 01 до 12
H Часы в 24-часовом формате, 2 цифры от 00 до 23
i Минуты, 2 цифры от 00 до 59
s Секунды, 2 цифры от 00 до 59

Ниже представлены некоторые примеры получения фактической информации о дате и времени:

<?php
echo "Отображение текущей даты: " . date('d-m-Y') . "<br>";
echo "Отображение текущего времени: " . date('H:i:s') . "<br>";
echo "Отображение текущей даты и времени: " . date('d-m-Y H:i:s') . "<br>";
echo "Отображение текущей даты и времени в длинном формате: " . date('d F Y, D - g:i:s A');
?>

Используйте функцию date() для автоматического обновления года в футере вашего веб-сайта:


Copyright © 2014-<?phpphp echo date("Y"); ?> Все права защищены.

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

Copyright © 2014-2024 Все права защищены.

Примечание: Обратите внимание, что функция PHP date() вернет текущую дату / время сервера!

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

Итак, если вам нужно, чтобы время было правильным для вашего региона, вы можете установить часовой пояс, который хотите использовать.

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

date_default_timezone_set( string $timezone_identifier )

Параметр timezone_identifier — это идентификатор временной зоны.

Функция date_default_timezone_set() устанавливает часовой пояс, который по умолчанию используется всеми дата/время функциями в сценарии. Чтобы изменить значение часового пояса для вашего веб-сайта, достаточно в начале скрипта задать функцию date_default_timezone_set(), параметром которой будет служить название часового пояса.

Пример использования:

date_default_timezone_set( 'Europe/Kiev' );
date_default_timezone_set( 'Europe/Moscow' );

В приведенном ниже примере для часового пояса устанавливается значение 'Europe/Moscow', а затем выводится текущее время в указанном формате:

<?php
date_default_timezone_set('Europe/Moscow');
echo "Текущее время в Москве " . date("h:i:sa");
date_default_timezone_set('Europe/Kiev');
echo "Текущее время в Киеве " . date("h:i:sa");
?>

Необязательный параметр timestamp функции date() указывает временную метку. Если она не указано, будут использоваться текущая дата и время (как в примерах выше).

Но если вам нужно получить метку времени в прошлом или будущем, то сделать это можно с помощью функции mktime(). Вам нужно указать нужную дату, и она возвращается с меткой времени Unix. Метка времени Unix содержит количество секунд между эпохой Unix (1 января 1970 г., 00:00:00 GMT) и указанным временем.

Синтаксис данной функции следующий:

mktime(hour, minute, second, month, day, year)

Здесь используются следующие данные:

hour
Количество часов, прошедших с начала дня, указанного параметрами month, day и year.
minute
Количество минут, прошедших от начала часа, указанного параметром hour.
second
Количество секунд, прошедших от начала минуты, указанной параметром minute.
month
Количество месяцев, прошедших с конца предыдущего года.
day
Количество дней, прошедших с конца предыдущего месяца.
year
Номер года, может быть указан двумя или четырьмя цифрами.

Аргументы могут быть опущены в порядке справа налево. В этом случае их значения по умолчанию равны соответствующим компонентам локальной даты/времени.

Функцию mktime() удобно использовать для выполнения арифметических операций с датами, так как она вычисляет верные значения при некорректных аргументах. Например, в следующем примере каждая строка выведет "Jan-01-1921":

<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1920));
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1920));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1921));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 21));
?>

Если вы хотите получить дату завтрашнего дня, вы можете использовать следующий код:

<?php
echo "Сегодняшняя дата: " . date('d-m-Y') . "<br>";
echo "Завтра будет: " . date('d-m-Y', mktime(0, 0, 0, date('m'), date('d')+1, date('Y')));
?>

В приведенном примере мы использовали функцию mktime() и добавили 1 день к параметру дня, чтобы получить дату завтрашнего дня.

Функция mktime() переводит заданную дату в формат timestamp. Формат timestamp - это количество секунд, прошедшее с 1-го января 1970 года по заданный момент времени.

В следующем примере получим разницу в секундах между 1970 годом и 31.12.2025, 12:59:59:

<?php
echo mktime(12, 59, 59, 31, 12, 2025);
?>

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

1815386399

Функция PHP strtotime() используется для преобразования удобочитаемой строки даты в метку времени Unix (количество секунд с 1 января 1970 года 00:00:00 по Гринвичу).

Синтаксис

strtotime(time, now)

Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате.

Следующий пример создает дату и время из функции strtotime():

<?php
$d=strtotime("10:30pm April 15 2020");
echo "Дата создания " . date("Y-m-d h:i:sa", $d);
?>

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

Дата создания 2020-04-15 10:30:00pm

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

<?php
$d=strtotime("tomorrow");
echo "Завтра: " . date("Y-m-d h:i:sa", $d) . "<br>";

$d=strtotime("next Saturday");
echo "Следующая суббота: " . date("Y-m-d h:i:sa", $d) . "<br>";

$d=strtotime("+7 Months");
echo "Через 7 месяцев: " . date("Y-m-d h:i:sa", $d);
?>

В следующем примере вы можете посмотреть даты ближайших семи суббот начиная с момента изучения данного урока PHP:

<?php
$startdate = strtotime("Saturday");
$enddate = strtotime("+7 weeks", $startdate);

while ($startdate < $enddate) {
  echo date("M d", $startdate) . "<br>";
  $startdate = strtotime("+1 week", $startdate);
}
?>

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

Пример использования time():

<?php
$nextWeek = time() + (7 * 24 * 60 * 60); // 7 дней; 24ч; 60мин; 60сек                
echo 'Сегодня:           '. date('Y-m-d') . "<br>";
echo 'Следующая неделя: '. date('Y-m-d', $nextWeek) . "<br>";
// или с помощью strtotime():
echo 'Следующая неделя: '. date('Y-m-d', strtotime('+1 week')) . "<br>"; ?>

В следующем примере выводится количество дней до 1 июня от текущей даты:

<?php
$d1=strtotime("June 01");
$d2=ceil(($d1-time())/60/60/24);
echo "Осталось " . $d2 ." дней до 1 июня.";
?>

С помощью ceil мы округлили полученное значение в большую сторону.

Проверь себя с помощью упражнений

Задача:

Используйте функцию даты, чтобы вывести название текущего дня недели (понедельник, вторник и т.д.).

echo ;