Timestamp-ом в народе называют способ хранения даты в виде количества секунд прошедших с момента начала «эры UNIX» — полночь 1-го января 1970-го года (01.01.1970 00:00:00).
Начало «эры UNIX» является своеобразным «нулем» — точкой отсчета на оси времени. Следовательно, если возникает необходимость записать более раннюю дату (чем начало «эры UNIX»), то используется все тот же принцип (разность дат в секундах) и результат записывается со знаком «минус».
В 1С нет штатных инструментов работы с датами в формате timestamp. Но, к счастью, штатный тип данных «Дата» позволяет производить с ним такие операции, как сложение и вычитание, и, по сути, является количеством секунд прошедших с начала нашей эры — 00.00.0000 00:00:00.
Все это позволяет написать простую до смешного функцию, которая будет переводить в формат timestamp дату, указанную в параметре или текущую дату, если параметр не указан.
1 2 3 | Функция ДатуВTimestamp(пДата = Неопределено) Возврат Формат(Число(?(ТипЗнч(пДата) = Тип("Дата"), пДата, ТекущаяДата())-Дата("19700101")),"ЧН=0; ЧГ=0"); КонецФункции |
Обратное преобразование также не вызывает каких-либо затруднений.
1 2 3 4 5 6 7 | Функция TimestampВДату(пДатаТС) Попытка Возврат Дата("19700101")+?(ТипЗнч(пДатаТС) = Тип("Строка"), Число(пДатаТС), пДатаТС); Исключение Возврат Неопределено; КонецПопытки; КонецФункции |
На этом все, надеюсь данная статья Вам помогла.
Дата в TimeStamp сразу преобразовалась правильно
А вот обратное преобразование в этом варианте работает для секунд. Если нужно преобразовать из миллисекунд, то должно быть
Возврат Дата(«19700101»)+?(ТипЗнч(пДатаТС) = Тип(«Строка»), Число(пДатаТС), пДатаТС)/1000.
Спасибо за помощь!
Что за форматолюбство? Здесь достаточно XMLСтрока(). И работать будет быстрее.