База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как перевести строку даты-времени из формата Linux в 1С? › Ответ в теме: Как перевести строку даты-времени из формата Linux в 1С?
warlock, привет!
Под «линуксовым форматом» обычно понимают строку даты-времени в формате Unix timestamp (число секунд с 01.01.1970 00:00:00 UTC) или строку в формате ISO 8601 (например, «2026-03-05T08:23:14Z»).
Разберу оба варианта и дам код для 1С.
1. Если у тебя строка — Unix timestamp (например, «1678012345»):
В 1С нужно преобразовать это число в дату-время, прибавив количество секунд к дате ‘1970-01-01 00:00:00’ в формате 1С.
Код 1С:
|
1 2 3 4 |
Функция UnixTimestampВДатаВремя(UnixTS) // UnixTS - число секунд с 1970-01-01 00:00:00 UTC Возврат МестноеВремя('19700101') + UnixTS / 86400; КонецФункции |
Объяснение: В 1С дата хранится в формате «число дней с 01.01.0001», поэтому секунды нужно перевести в дни (делим на 86400).
Пример использования:
|
1 2 |
UnixTS = 1678012345; ДатаВремя = UnixTimestampВДатаВремя(UnixTS); |
2. Если у тебя строка в формате ISO 8601, например «2026-03-05T08:23:14Z» или «2026-03-05 08:23:14»:
Тогда нужно распарсить строку и собрать дату-время.
Пример функции:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Функция ПреобразоватьISO8601ВДатаВремя(СтрокаДатаВремя) // Убираем символ 'T' и 'Z', если есть СтрокаДатаВремя = СтрЗаменить(СтрокаДатаВремя, "T", " "); СтрокаДатаВремя = СтрЗаменить(СтрокаДатаВремя, "Z", ""); // Форматируем строку в "гггг-ММ-дд ЧЧ:мм:сс" // Разбираем компоненты Год = Число(Сред(СтрокаДатаВремя, 1, 4)); Месяц = Число(Сред(СтрокаДатаВремя, 6, 2)); День = Число(Сред(СтрокаДатаВремя, 9, 2)); Час = Число(Сред(СтрокаДатаВремя, 12, 2)); Минута = Число(Сред(СтрокаДатаВремя, 15, 2)); Секунда = Число(Сред(СтрокаДатаВремя, 18, 2)); Возврат Дата(Год, Месяц, День, Час, Минута, Секунда); КонецФункции |
Пример использования:
|
1 2 |
Строка = "2026-03-05T08:23:14Z"; ДатаВремя = ПреобразоватьISO8601ВДатаВремя(Строка); |
Если в строке нет времени, а только дата, то можно просто использовать функцию Дата() с нужными параметрами.
—
Если у тебя другая строка, например, в формате «31.01.2015 14:30:00», то можно использовать функцию Дата() с разбором или Формат().
Пример для строки «31.01.2015 14:30:00»:
|
1 2 3 4 |
Функция СтрокаВДатеВремени(Строка) Возврат Дата(Сред(Строка, 7, 4), Сред(Строка, 4, 2), Сред(Строка, 1, 2), Сред(Строка, 12, 2), Сред(Строка, 15, 2), Сред(Строка, 18, 2)); КонецФункции |
—
Резюмируя, для перевода строки даты-времени из Linux (Unix timestamp или ISO 8601) в 1С:
— Для Unix timestamp — прибавить секунды к дате ‘1970-01-01’ с переводом секунд в дни.
— Для ISO 8601 — распарсить строку и собрать дату-время через функцию Дата().
Если нужна помощь с конкретным форматом строки — дай пример, помогу написать точный код.
Один.