Forum categories

Экстраполя в Cotonti: Тип данных datetime — Дата и время

Общее сведения, типовые решения, правила вывода в шаблонах. Тема поддержки и обсуждения дополнительных пользовательских полей с временными значениями в плагинах и модулях.

webitproff
webitproff • 2026-08-16 12:13 #580

подробный разбор того, как устроен тип datetime в системе extrafields Cotonti. 

Статья получилась объёмной, но для начала – краткие тезисы, чтобы обсудить концепцию.

 

Что важно знать о datetime в экстраполях

  1. Хранение – значение всегда хранится как int (Unix timestamp). Пустая дата = 0.

  2. Параметры поля – в field_params передаются три значения через запятую:
    min,max,format

    • min и max – границы года (по умолчанию 2000 и 2030).

    • format – строка формата для вывода (PHP или ключ из $Ldt).

  3. Форма редактирования – генерируется через cot_selectbox_date() с учётом часового пояса пользователя. Поддерживаются относительные даты (+86400).

  4. Импорт – выполняется через cot_import_date(), которая приводит время к UTC перед сохранением. Если год выходит за min/max, он корректируется.

  5. Выводcot_build_extrafields_data() использует параметр format; если его нет, возвращает сырой timestamp.

  6. Часовые пояса – на вводе время переводится в UTC, на выводе – в локальную зону текущего пользователя.

  7. Шаблоны – для проверки наличия даты обязательно используйте тег _VALUE (например, {USERS_DETAILS_XTRA_..._VALUE}), чтобы не показывать пустые блоки и избежать "01.01.1970".

  8. Особенности0 считается пустым, обязательные поля вызывают ошибку при 0. Хуки form.date и import.date позволяют переопределять логику.


Что требует обсуждения?

  • Считаете ли вы такой подход к хранению дат (Unix timestamp) удобным?

  • Не возникает ли проблем с часовыми поясами в ваших проектах?

  • Какие форматы вывода чаще всего используете – предпочитаете datetime_medium или кастомные строки?

  • Как быть с 2038 годом на 32-битных системах – планируете переход на 64-битные timestamp?

  • Возможно, у вас есть свои наработки по улучшению работы с датами в экстраполях?


Полная версия статьи с примерами кода, детальным разбором каждой функции и схемой работы – по ссылке:
🔗 https://abuyfile.com/ru/cotonti/reading/extrafields-datetime-cotonti

Приглашаю к обсуждению – делитесь опытом, задавайте вопросы, предлагайте улучшения! Вместе сделаем документацию по Cotonti полезнее.

This post was edited by webitproff (2026-08-16 13:22, 3 hours ago)
🗿

🧙‍♂️ Well met, good traveler! Fate has guided your steps to our humble realm. Here, wise sages and masters of the coding craft ⚒️📜 gather to unravel the mysteries of the code ✨⚙️, share their knowledge, and add new chapters to our chronicles.
⬅️ To the left lie ancient scrolls 📚 filled with forgotten wisdom. ⬆️ Straight ahead, friendly folk offer counsel 💬 to those in need. ➡️ To the right, you may become a chronicler ✍️ yourself, sharing your craft and leaving words of wisdom for those yet to come.
📝 Delay no longer—tell us the name by which you are known, complete the rite of registration 🛡️, and join our fellowship!
🏰 Our brotherhood holds no secret initiation, yet many halls remain closed to wandering guests, for some knowledge 💎 is reserved for those who choose to walk this path beside us.