Date: примеры (PHP)
date(string $format, ?int $timestamp = null): stringОсновы функции date в PHP
Функция date в PHP используется для форматирования вывода даты и времени. Она возвращает строку, отформатированную согласно указанному шаблону. Работа функции основана на временной метке Unix, которая представляет собой количество секунд, прошедших с 1 января 1970 года.
string date(string $format, ?int $timestamp = null)
Функция принимает два параметра:
- format (обязательный) - строка форматирования, определяющая вид вывода даты. Состоит из символов, каждый из которых заменяется соответствующим значением даты.
- timestamp (необязательный) - целочисленная временная метка Unix. Если параметр не указан или равен null, используется текущее время (time()).
- d - день месяца (01-31)
- D - сокращенное название дня недели (Mon-Sun)
- j - день месяца без ведущих нулей (1-31)
- l - полное название дня недели (Sunday-Saturday)
- m - номер месяца (01-12)
- M - сокращенное название месяца (Jan-Dec)
- F - полное название месяца (January-December)
- Y - год (4 цифры)
- y - год (2 цифры)
- H - часы в 24-часовом формате (00-23)
- i - минуты (00-59)
- s - секунды (00-59)
Практические примеры использования
echo date('d.m.Y');17.08.2024
echo date('H:i:s');14:25:03
$timestamp = strtotime('2023-12-31');
echo date('d F Y, l', $timestamp);31 December 2023, Sunday
echo "Сегодня: " . date('d.m.Y') . "\n";
echo "Текущее время: " . date('H:i:s') . "\n";
echo "Дата и время: " . date('d.m.Y H:i:s');Сегодня: 17.08.2024 Текущее время: 14:25:03 Дата и время: 17.08.2024 14:25:03
Альтернативные функции работы с датой в PHP
Класс DateTime предоставляет объектно-ориентированный интерфейс для работы с датами и временем. Он более гибкий и мощный чем функция date.
$date = new DateTime();
echo $date->format('d.m.Y H:i:s');17.08.2024 14:25:03
Функция форматирует дату и время согласно локали. Начиная с PHP 8.1 считается устаревшей.
setlocale(LC_TIME, 'ru_RU.UTF-8');
echo strftime('%d %B %Y');17 августа 2024
Аналогична функции date, но возвращает время по Гринвичу (GMT).
echo gmdate('d.m.Y H:i:s');17.08.2024 11:25:03
Для простого форматирования текущей даты достаточно функции date. Для сложных операций с датами рекомендуется использовать класс DateTime. Для локализованного вывода стоит рассмотреть IntlDateFormatter.
Аналоги в других языках программирования
Date в Python
Модуль datetime предоставляет схожие возможности. Основное отличие - объектно-ориентированный подход.
from datetime import datetime
now = datetime.now()
print(now.strftime('%d.%m.%Y %H:%M:%S'))17.08.2024 14:25:03
Date в Javascript
Объект Date в JavaScript. Форматирование выполняется через методы объекта.
const now = new Date();
console.log(now.toLocaleDateString('ru-RU'));
console.log(now.getDate() + '.' + (now.getMonth()+1) + '.' + now.getFullYear());17.08.2024 17.8.2024
Date в MySQL
Функция DATE_FORMAT для форматирования дат в запросах.
SELECT DATE_FORMAT(NOW(), '%d.%m.%Y %H:%i:%s');17.08.2024 14:25:03
Распространенные ошибки и проблемы
echo date('d-M-Y h');17-Aug-2024 02
Символ 'h' выводит часы в 12-часовом формате, что может быть неочевидно.
echo date('Y-m-d e');2024-08-17 Europe/Moscow
Символ 'e' возвращает временную зону, но его поведение может отличаться в разных версиях PHP.
echo date('d.m.Y', 'не число');Warning: date() expects parameter 2 to be int, string given
date_default_timezone_set('UTC');
echo date('H:i:s');
date_default_timezone_set('Europe/Moscow');
echo date('H:i:s');11:25:03 14:25:03
Изменения в современных версиях PHP
Параметр timestamp стал nullable. Теперь можно явно передавать null. Увеличена строгость проверки типов параметров.
Добавлены константы для удобного форматирования дат в стандартах ISO и RFC.
echo date(DATE_ATOM);
echo date(DATE_RFC7231);2024-08-17T14:25:03+03:00 Sat, 17 Aug 2024 14:25:03 GMT
Функция strftime и связанные с ней объявлены устаревшими в PHP 8.1. Рекомендуется переход на IntlDateFormatter.
Расширенные примеры применения
$nextWeek = time() + (7 * 24 * 60 * 60);
echo 'Неделя: ' . date('d.m.Y', $nextWeek);
$lastMonth = strtotime('-1 month');
echo 'Месяц назад: ' . date('d.m.Y', $lastMonth);Неделя: 24.08.2024 Месяц назад: 17.07.2024
echo date('c'); // ISO 8601
echo date('r'); // RFC 2822
echo date('U'); // Unix timestamp2024-08-17T14:25:03+03:00 Sat, 17 Aug 2024 14:25:03 +0300 1723893903
echo 'MySQL DATETIME: ' . date('Y-m-d H:i:s');
echo 'MySQL DATE: ' . date('Y-m-d');
echo 'MySQL TIME: ' . date('H:i:s');MySQL DATETIME: 2024-08-17 14:25:03 MySQL DATE: 2024-08-17 MySQL TIME: 14:25:03
$userFormat = 'Сегодня {d} день {M} месяца {Y} года';
$result = preg_replace_callback('/\{(\w+)\}/', function($matches) {
return date($matches[1]);
}, $userFormat);
echo $result;Сегодня 17 день Aug месяца 2024 года