1C:Предприятие 8 Unix Timestamp

Понадобилось тут мне сгенерировать unix timestamp в 1С:Предприятие 8.2
Первым делом решил погуглить, и нашёл вот эту ссылку: http://forum.mista.ru/topic.php?id=356184


Функция ПолучитьUnix(Знач Год,Знач Месяц,Знач День,Знач Часы,Знач Минуты,Знач Секунды,Знач Пояс=3)
    Возврат (Дата(Год,Месяц,День)-'01.01.1970')*24*60*60+Часы*60*60+Минуты*60+Секунды-Пояс*60*60;
КонецФункции

Процедура РазобратьUnix(Знач ДатаВремя,Год,Месяц,День,Часы,Минуты,Секунды,Знач Пояс=3)
    ПолноеЧислоСекунд=('01.01.1970'-'01.01.0000')*24*60*60+ДатаВремя+Пояс*60*60;
    Секунды=ПолноеЧислоСекунд%60;
    ПолноеЧислоМинут=Цел(ПолноеЧислоСекунд/60);
    Минуты=ПолноеЧислоМинут%60;
    ПолноеЧислоЧасов=Цел(ПолноеЧислоМинут/60);
    Часы=ПолноеЧислоЧасов%24;
    ПолноеЧислоДней=Цел(ПолноеЧислоЧасов/24);
    ПолнаяДата='01.01.0000'+ПолноеЧислоДней;
    День=ДатаЧисло(ПолнаяДата);
    Месяц=ДатаМесяц(ПолнаяДата);
    Год=ДатаГод(ПолнаяДата);
КонецПроцедуры

Но код этот для седьмой версии, а мне надо для восьмой!

Почитал педивикию, стукнул себя по лбу, и написал:


Функция ПолучитьUnixTS(ПараметрДата)
    Возврат ПараметрДата - '19700101';
КонецФункции

Update: А, нет, нифига. Нужно использовать UTC, а не локальное время.
Update 2:


Функция ПолучитьUnixTS(ПараметрДата)
    Возврат УниверсальноеВремя(ПараметрДата) - '19700101';
КонецФункции

И наоборот:


Функция СконвертироватьВремяUnixTS(UnixTime)
    Возврат МестноеВремя('19700101' + UnixTime);
КонецФункции

Комментарии

Спасибо за обновление

google.com Vlad Frost:

Я там правильный код добавил.

Серега:

Спасибо тебе, добрый человек. Хорошо погуглил. А то уже хотел свое городить. А оказалось так просто.

google.com Vlad Frost:

Не за что, обращайтесь 🙂
С чем интегрируетесь, если не секрет?

Серега:

Да по всякому. 1С Документооборот в частности. У меня теперь эти функции кочуют. Если баги какие еще найдете, просьба заапдейтить.

Добавить комментарий