Дата и время
В этой статье вы узнаете, как использовать функцию date_format()
для работы с датами и временем в формулах.
1. Справочник ключевых слов и их значений
Основные единицы времени
Ниже приведены слова, которые обозначают промежутки времени: часы, дни, годы и т.д. Их можно использовать для прибавления или вычитания времени.
-
Год(ы)
Ключевые слова: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 декабря следующего года.
2. Примеры выражений
Пример 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.
3. Советы
-
Порядок слов
- Сначала указывайте относительные слова (
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')
4. Частые ошибки
-
Путаница с форматами дат
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 февраля).
- Порядок слов в выражении.