Дата и время
В этой статье вы узнаете, как использовать функцию date_format() для работы с датами и временем в формулах.
Справочник ключевых слов и их значений
Основные единицы времени
Ниже приведены слова, которые обозначают промежутки времени: часы, дни, годы и т.д. Их можно использовать для прибавления или вычитания времени.
-
Год(ы)
Ключевые слова:year(год),years(годы).
Примеры:+1 year— прибавить 1 год к текущей дате.-2 years— вычесть 2 года из текущей даты.
-
Месяц(ы)
Ключевые слова:month(месяц),months(месяцы).
Примеры:+3 months— прибавить 3 месяца.last month— предыдущий месяц.
-
День (дни)
Ключевые слова:day(день),days(дни).
Примеры:+5 days— через 5 дней.last day— последний день месяца.
-
Час(ы)
Ключевые слова:hour(час),hours(часы).
Пример:+24 hours— через 24 часа (то же, что +1 день). -
Минут(ы)
Ключевые слова:minute(минута),minutes(минуты).
Пример:-30 minutes— 30 минут назад. -
Секунд(ы)
Ключевые слова:second(секунда),seconds(секунды).
Пример:+5 seconds— через 5 секунд.
Слова для указания времени
Эти слова помогают задать конкретные моменты времени.
-
Сейчас
Ключевое слово:now(сейчас).
Пример:now— текущее время (используется по умолчанию). -
Сегодня/Завтра/Вчера
today(сегодня) — начало текущего дня (00:00:00).tomorrow(завтра) — завтра в 00:00:00.yesterday(вчера) — вчера в 00:00:00.
-
Начало/конец дня
midnight(полночь) — то же, чтоtoday(00:00:00).noon(полдень) — 12:00:00 текущего дня.
Слова для сдвига времени
Эти слова помогают перемещаться между периодами (например, “предыдущий месяц” или “следующий понедельник”).
-
Первый/Последний
first(первый) — первый день/месяц и т.д.last(последний) — последний день/месяц.
Примеры:first day of January— 1 января.last month— последний месяц (например, если сейчас апрель, вернёт март).
-
Предыдущий/Следующий
previous(предыдущий) — переместиться к предыдущему периоду.next(следующий) — переместиться к следующему периоду.
Примеры:next Monday— следующий понедельник.previous year— предыдущий год.
-
Этот
Ключевое слово:this(этот).
Пример:this week— текущая неделя.
Специальные слова
-
Рабочие дни
Ключевое слово:weekday(рабочий день).
Рабочие дни — это понедельник–пятница.
Пример:+1 weekday— пропустить выходные.- Если сегодня пятница (25 августа),
+1 weekdayвернёт понедельник (28 августа).
- Если сегодня пятница (25 августа),
-
Дни недели
Можно использовать сокращения:mon(понедельник),tue(вторник), …,sun(воскресенье).
Примеры:last thu— предыдущий четверг.next sat— следующая суббота.
-
Восход/Закат
Ключевые слова:sunrise(восход),sunset(закат).
Важно! Для работы нужны географические координаты в настройках PHP.
Как комбинировать даты и слова
Вы можете смешивать конкретные даты (например, 12/31) с относительными словами (например, previous year).
Примеры:
12/31 previous year— 31 декабря предыдущего года.2025-01-01 +1 month— 1 февраля 2025.
Порядок слов важен!
previous year 12/31— то же, что12/31 previous year.12/31 +1 year— 31 декабря следующего года.
Примеры выражений
Пример 1: Простые сдвиги
date_format('+3 days')
// Через 3 дня от текущей даты.Пример 2: Начало/конец периода
date_format('first day of next month')
// Первый день следующего месяца.
// Если сейчас 15 марта → 1 апреля.Пример 3: Рабочие дни
date_format('2023-12-25 +1 weekday')
// Если 25 декабря — понедельник, результат — 26 декабря (вторник).
// Если 25 декабря — пятница, результат — 28 декабря (понедельник, пропущены выходные).Пример 4: Комбинация даты и относительного слова
date_format('03/15 previous year')
// 15 марта предыдущего года.
// Если сейчас 2024 → 15 марта 2023.Пример 5: Время и дата
date_format('next Friday 14:30:00')
// Следующая пятница в 14:30:00.Пример 6: Ошибочная дата
date_format('02/30/2023')
// 30 февраля не существует → вернёт ошибку.Пример 7: Смещение на квартал
date_format('+3 months')
// Через 3 месяца (один квартал).
// Если сейчас 15 марта 2024 → 15 июня 2024.Пример 8: Начало текущего квартала
date_format('first day of January this year')
// 1 января 2024 (начало первого квартала).
// Аналогично для April/July/October.Пример 9: Конец предыдущего квартала
date_format('last day of last month -2 months')
// Пример для текущего месяца (июнь 2024):
// 1. last month → май 2024
// 2. -2 months → март 2024
// 3. last day of → 31 марта 2024 (конец первого квартала).Пример 10: Через два триместра
date_format('+6 months')
// Через 6 месяцев (два триместра).
// Если сейчас 10 февраля 2024 → 10 августа 2024.Пример 11: Первый день следующего квартала
date_format('first day of +3 months')
// Первый день квартала, который начнётся через 3 месяца.
// Если сейчас 20 апреля 2024 → 1 июля 2024.Советы
-
Порядок слов
- Сначала указывайте относительные слова (
previous year), затем дату (12/31). - Неправильно:
12/31 previous year→ Правильно:previous year 12/31(работают оба варианта, но лучше придерживаться одного стиля).
- Сначала указывайте относительные слова (
-
Разделители дат
Можно использовать/,.,-или пробелы:31.12.2023,12/31/2023,2023-12-31.
-
Проверяйте даты
- Некорректные даты (например,
2023-13-01) вернут ошибку. - Всегда проверяйте результат:
date: date_format('неправильная дата') date === false ? 'Ошибка' : 'Тут ваше выражение'
- Некорректные даты (например,
-
Временные зоны
Указывайте зону, если работаете с разными регионами:date_format('2023-10-01 14:00 Europe/Moscow')
Частые ошибки
-
Путаница с форматами дат
04/05/2023может быть прочитано как 4 мая или 5 апреля в зависимости от настроек локали.- Используйте однозначный формат
YYYY-MM-DD:2023-05-04.
-
Неправильные дни недели
next mon— верно,next monday— тоже верно (регистр не важен).next mnday— ошибка (опечатка).
-
Смешивание времени и даты
- Правильно:
next year 12/31 14:00. - Неправильно:
14:00 next year 12/31(время должно быть в конце).
- Правильно:
В статье приведены все основные сценарии. Если что-то не работает, проверьте:
- Правильность написания ключевых слов.
- Корректность даты (например, нет ли 30 февраля).
- Порядок слов в выражении.