JohnCMS
10.0
10.0
  • Введение
  • Начало работы
    • Установка и системные требования
    • Настройка
    • Структура файлов/папок
    • Обновление с 9 версии
  • Общие сведения
    • Проблемы и их решение
    • Конфигурационные файлы (configs)
    • Шаблоны электронных сообщений (email)
    • Отправка электронной почты (email)
    • Работа с уведомлениями
    • Работа с запросом (Request)
    • Дата, время, часовые пояса
    • Валидация
      • NotEmpty - Не пустое значение
      • StringLength - длина строки
      • LessThan - Менее чем
      • EmailAddress - Проверка email адреса
      • ModelExists - Проверка существования записи в БД
      • ModelNotExists - Проверка отсутствия записи в БД
      • Csrf - Проверка токена
      • Flood - проверка на флуд
      • Ban - Проверка банов
      • Captcha - Проверка защитного кода
  • Шаблоны
    • Структура стандартного шаблона
    • Изменение стилей шаблона
    • Создание собственного шаблона
  • Модули
    • Структура модуля
    • Создание модуля
    • Маршрутизация (роутинг)
  • Мультиязычность
    • Переводы модулей и общие сведения
    • Перевод JohnCMS на другие языки
    • Исправление ошибок в переводе
  • База данных
    • Настройки подключения к базе данных
    • Выполнение запросов к базе данных
    • Вставка записей (insert)
    • Обновление записей (update)
    • Удаление записей (delete)
  • Eloquent ORM
    • Общие сведения и начало работы
  • Пользователи
    • Поля (свойства) пользователей
    • Работа с пользователями в примерах
    • Работа с текущим авторизованным пользователем
Powered by GitBook
On this page

Was this helpful?

Export as PDF
  1. Общие сведения

Дата, время, часовые пояса

Работать с датами в PHP довольно просто, но когда дело доходит до работы с часовыми поясами всё становится не так просто.

Чтобы было проще работать с датами и временем в JohnCMS достаточно придерживаться простых правил:

  • Все даты в базе данных должны храниться в UTC

  • Все даты при выводе должны выводиться в часовом поясе пользователя

Для упрощения работы в JohnCMS есть несколько вспомогательных методов для работы с датами.

Выводим дату и время в пользовательском формате с учетом его часового пояса:

$time = '18.02.2023 13:46';
echo \Johncms\Utility\DateTime::userFormat($time);

Выводим дату и время в определенном формате с датой и временем без учета настроек формата пользователя:

$time = '18.02.2023 13:46';
echo \Johncms\Utility\DateTime::format($time);
// Вывод только даты без времени
echo \Johncms\Utility\DateTime::format($time, true);
// Вывод со временем, но без секунд
echo \Johncms\Utility\DateTime::format($time, false, true);

Выводим дату и время в упрощенном формате (2 часа назад, 3 секунды назад и т.д.)

$time = '18.02.2023 13:46';
echo \Johncms\Utility\DateTime::calendarFormat($time);

А теперь рассмотрим подготовку даты и времени для записи в БД:

$time = '18.02.2023 13:46';
$preparedTime = \Johncms\Utility\DateTime::prepareForDatabase($time);
// Если не нужно учитывать часовой пояс
$preparedTime = \Johncms\Utility\DateTime::prepareForDatabase($time, false);

Эта вспомогательная функция будет полезна если пользователь где-либо на сайте может указывать дату и время. Т.к. пользователь указывает время в своем часовом поясе, то перед сохранением в БД или куда-либо ещё его необходимо сначала привести к UTC.

Обратите внимание, что стандартные функции php такие как date() и time() будут возвращать дату и время в UTC, по этому если вы используете их при записи в БД, дополнительно менять часовой пояс для них не нужно. Достаточно только при выводе воспользоваться одной из вспомогательных функций выше.

PreviousРабота с запросом (Request)NextВалидация

Last updated 2 years ago

Was this helpful?