Date: примеры (PHP)

Исчерпывающий справочник по функции 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 класс

Класс DateTime предоставляет объектно-ориентированный интерфейс для работы с датами и временем. Он более гибкий и мощный чем функция date.

$date = new DateTime();
echo $date->format('d.m.Y H:i:s');
17.08.2024 14:25:03
Функция strftime

Функция форматирует дату и время согласно локали. Начиная с PHP 8.1 считается устаревшей.

setlocale(LC_TIME, 'ru_RU.UTF-8');
echo strftime('%d %B %Y');
17 августа 2024
Функция gmdate

Аналогична функции 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

PHP 8.0

Параметр timestamp стал nullable. Теперь можно явно передавать null. Увеличена строгость проверки типов параметров.

PHP 7.0

Добавлены константы для удобного форматирования дат в стандартах 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.

Расширенные примеры применения

Работа с интервалами
Пример php
$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
Специализированные форматы
Пример php
echo date('c'); // ISO 8601
echo date('r'); // RFC 2822
echo date('U'); // Unix timestamp
2024-08-17T14:25:03+03:00
Sat, 17 Aug 2024 14:25:03 +0300
1723893903
Форматирование для баз данных
Пример php
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
Пользовательские форматы
Пример php
$userFormat = 'Сегодня {d} день {M} месяца {Y} года';
$result = preg_replace_callback('/\{(\w+)\}/', function($matches) {
    return date($matches[1]);
}, $userFormat);
echo $result;
Сегодня 17 день Aug месяца 2024 года

PHP date function comments

En
Date Format a Unix timestamp