Skip to Content

Дата и время

В этой статье вы узнаете, как использовать функцию date_format() для работы с датами и временем в формулах.

1. Справочник ключевых слов и их значений

Основные единицы времени

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

  1. Год(ы)
    Ключевые слова: year (год), years (годы).
    Примеры:

    • +1 year — прибавить 1 год к текущей дате.
    • -2 years — вычесть 2 года из текущей даты.
  2. Месяц(ы)
    Ключевые слова: month (месяц), months (месяцы).
    Примеры:

    • +3 months — прибавить 3 месяца.
    • last month — предыдущий месяц.
  3. День (дни)
    Ключевые слова: day (день), days (дни).
    Примеры:

    • +5 days — через 5 дней.
    • last day — последний день месяца.
  4. Час(ы)
    Ключевые слова: hour (час), hours (часы).
    Пример: +24 hours — через 24 часа (то же, что +1 день).

  5. Минут(ы)
    Ключевые слова: minute (минута), minutes (минуты).
    Пример: -30 minutes — 30 минут назад.

  6. Секунд(ы)
    Ключевые слова: second (секунда), seconds (секунды).
    Пример: +5 seconds — через 5 секунд.

Слова для указания времени

Эти слова помогают задать конкретные моменты времени.

  1. Сейчас
    Ключевое слово: now (сейчас).
    Пример: now — текущее время (используется по умолчанию).

  2. Сегодня/Завтра/Вчера

    • today (сегодня) — начало текущего дня (00:00:00).
    • tomorrow (завтра) — завтра в 00:00:00.
    • yesterday (вчера) — вчера в 00:00:00.
  3. Начало/конец дня

    • midnight (полночь) — то же, что today (00:00:00).
    • noon (полдень) — 12:00:00 текущего дня.

Слова для сдвига времени

Эти слова помогают перемещаться между периодами (например, “предыдущий месяц” или “следующий понедельник”).

  1. Первый/Последний

    • first (первый) — первый день/месяц и т.д.
    • last (последний) — последний день/месяц.
      Примеры:
    • first day of January — 1 января.
    • last month — последний месяц (например, если сейчас апрель, вернёт март).
  2. Предыдущий/Следующий

    • previous (предыдущий) — переместиться к предыдущему периоду.
    • next (следующий) — переместиться к следующему периоду.
      Примеры:
    • next Monday — следующий понедельник.
    • previous year — предыдущий год.
  3. Этот
    Ключевое слово: this (этот).
    Пример: this week — текущая неделя.

Специальные слова

  1. Рабочие дни
    Ключевое слово: weekday (рабочий день).
    Рабочие дни — это понедельник–пятница.
    Пример: +1 weekday — пропустить выходные.

    • Если сегодня пятница (25 августа), +1 weekday вернёт понедельник (28 августа).
  2. Дни недели
    Можно использовать сокращения:

    • mon (понедельник), tue (вторник), …, sun (воскресенье).
      Примеры:
    • last thu — предыдущий четверг.
    • next sat — следующая суббота.
  3. Восход/Закат
    Ключевые слова: 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. Советы

  1. Порядок слов

    • Сначала указывайте относительные слова (previous year), затем дату (12/31).
    • Неправильно: 12/31 previous yearПравильно: previous year 12/31 (работают оба варианта, но лучше придерживаться одного стиля).
  2. Разделители дат
    Можно использовать /, ., - или пробелы:

    • 31.12.2023, 12/31/2023, 2023-12-31.
  3. Проверяйте даты

    • Некорректные даты (например, 2023-13-01) вернут ошибку.
    • Всегда проверяйте результат:
      date: date_format('неправильная дата') date === false ? 'Ошибка' : 'Тут ваше выражение'
  4. Временные зоны
    Указывайте зону, если работаете с разными регионами:

    date_format('2023-10-01 14:00 Europe/Moscow')

4. Частые ошибки

  1. Путаница с форматами дат

    • 04/05/2023 может быть прочитано как 4 мая или 5 апреля в зависимости от настроек локали.
    • Используйте однозначный формат YYYY-MM-DD: 2023-05-04.
  2. Неправильные дни недели

    • next mon — верно, next monday — тоже верно (регистр не важен).
    • next mnday — ошибка (опечатка).
  3. Смешивание времени и даты

    • Правильно: next year 12/31 14:00.
    • Неправильно: 14:00 next year 12/31 (время должно быть в конце).

В статье приведены все основные сценарии. Если что-то не работает, проверьте:

  • Правильность написания ключевых слов.
  • Корректность даты (например, нет ли 30 февраля).
  • Порядок слов в выражении.