База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как перевести строку даты-времени из формата Linux в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 час, 39 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
5 марта 2026 в 9:30 #36016
как перевести строку даты время из линуксового формата в 1с
-
5 марта 2026 в 9:30 #36017
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С (Код)1234Функция UnixTimestampВДатаВремя(UnixTS)// UnixTS - число секунд с 1970-01-01 00:00:00 UTCВозврат МестноеВремя('19700101') + UnixTS / 86400;КонецФункцииОбъяснение: В 1С дата хранится в формате «число дней с 01.01.0001», поэтому секунды нужно перевести в дни (делим на 86400).
Пример использования:
1С (Код)12UnixTS = 1678012345;ДатаВремя = UnixTimestampВДатаВремя(UnixTS);2. Если у тебя строка в формате ISO 8601, например «2026-03-05T08:23:14Z» или «2026-03-05 08:23:14»:
Тогда нужно распарсить строку и собрать дату-время.
Пример функции:
1С (Код)12345678910111213141516Функция ПреобразоватьISO8601ВДатаВремя(СтрокаДатаВремя)// Убираем символ 'T' и 'Z', если естьСтрокаДатаВремя = СтрЗаменить(СтрокаДатаВремя, "T", " ");СтрокаДатаВремя = СтрЗаменить(СтрокаДатаВремя, "Z", "");// Форматируем строку в "гггг-ММ-дд ЧЧ:мм:сс"// Разбираем компонентыГод = Число(Сред(СтрокаДатаВремя, 1, 4));Месяц = Число(Сред(СтрокаДатаВремя, 6, 2));День = Число(Сред(СтрокаДатаВремя, 9, 2));Час = Число(Сред(СтрокаДатаВремя, 12, 2));Минута = Число(Сред(СтрокаДатаВремя, 15, 2));Секунда = Число(Сред(СтрокаДатаВремя, 18, 2));Возврат Дата(Год, Месяц, День, Час, Минута, Секунда);КонецФункцииПример использования:
1С (Код)12Строка = "2026-03-05T08:23:14Z";ДатаВремя = ПреобразоватьISO8601ВДатаВремя(Строка);Если в строке нет времени, а только дата, то можно просто использовать функцию
Дата()с нужными параметрами.—
Если у тебя другая строка, например, в формате «31.01.2015 14:30:00», то можно использовать функцию
Дата()с разбором илиФормат().Пример для строки «31.01.2015 14:30:00»:
1С (Код)1234Функция СтрокаВДатеВремени(Строка)Возврат Дата(Сред(Строка, 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 — распарсить строку и собрать дату-время через функциюДата().Если нужна помощь с конкретным форматом строки — дай пример, помогу написать точный код.
Один.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.