1С 8.3 Конвертация даты в UNIX
Данные > Примеры кода 1С > 1С 8.3 Дата и время
Перейти в основной раздел:
В повседневной разработке на платформе 1С:8.3/8.5 часто возникает задача обмена данными с внешними системами. Большинство современных сервисов и API используют UNIX-время - количество секунд, прошедших с 1 января 1970 года (так называемой эпохи UNIX). Для корректной интеграции необходимо уметь преобразовывать даты 1С в UNIX-формат и обратно.
Что такое UNIX-время? UNIX-время - это целое число, отражающее количество секунд, прошедших с 00:00:00 UTC 01.01.1970.
Преимущество: простота хранения и передачи (одно число вместо сложной структуры даты).
Недостаток: требуется преобразование при работе с локальными часовыми поясами и форматами.
Проблема в 1С: Встроенный язык 1С работает с датами как с разницей в сутках. Это значит, что при вычислениях приходится вручную переводить дни в секунды или миллисекунды. Если не учесть этот момент, легко получить смещение или потерю точности.
Функции преобразования в UNIX (туда и обратно):
// Дата → UNIX-время (в секундах)
Функция ДатаВUNIX(Дата) Экспорт
Результат = Число(Дата - '19700101') * 86400;
Возврат Результат;
КонецФункции
// UNIX-время (в секундах) → Дата
Функция UNIXВДату(Unix) Экспорт
Если ПустоеЗначение(Unix) Тогда
Возврат Дата('00010101');
КонецЕсли;
БазоваяДата = Дата(1970,1,1,0,0,0);
Результат = БазоваяДата + (Число(Unix) / 86400);
Возврат Результат;
КонецФункции
Функция ДатаВUNIX(Дата) Экспорт
Результат = Число(Дата - '19700101') * 86400;
Возврат Результат;
КонецФункции
// UNIX-время (в секундах) → Дата
Функция UNIXВДату(Unix) Экспорт
Если ПустоеЗначение(Unix) Тогда
Возврат Дата('00010101');
КонецЕсли;
БазоваяДата = Дата(1970,1,1,0,0,0);
Результат = БазоваяДата + (Число(Unix) / 86400);
Возврат Результат;
КонецФункции
Практическое применение:
Интеграция с REST API, где даты передаются в UNIX-формате.
Хранение временных меток в базе для последующей аналитики.
Синхронизация событий между 1С и внешними системами (например, CRM, ERP или веб-сервисами).
1
комментарий
Самый умный
15 ноя 2025
Умножать и делить на 86400 не надо
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник