Полезные функции работы с временем в DAX

Category: Статьи Post Date: 01.04.2020

Например нужно добавить значение: 40 часов, 70 мин 500сек к какой-то дате.

Функция получает строку формата “HH:MM:SS” и возвращает значение секунд которое дальше можно переводить в нужный формат либо добавлять эти секунды к дате и т.п.

static int64 StrHMS2Time(str _time, str _separator = ‘:’)

{
container       timeHMS;
int64           retTime;

timeHMS = str2con(_time, _separator, false);

if (str2int64(_time) != 0 && conLen(timeHMS) == 3)
{
retTime = (str2int64(conPeek(timeHMS, 1)) * 3600) +
(str2int64(conPeek(timeHMS, 2)) * 60) + str2int64(conPeek(timeHMS, 3));
}

return retTime;
}

Функция обратного преобразования:

static TempStr time2StrHMS(int64 time)
{
int64           hours;
int64           minutes;
TempStr         strTime;

str addLeadingZero(str _str)
{
if (strLen(_str) == 1)
return ‘0’ + _str;
else
return _str;
}

hours = time div 3600;
time = time < 0 ? -time : time;
minutes = time mod 3600 div 60;

strTime = addLeadingZero(int642str(hours)) + ‘:’;
strTime += addLeadingZero(int642str(minutes)) + ‘:’;
strTime += addLeadingZero(int642str(time mod 3600 mod 60));

return strTime;
}

Подписывайтесь на канал @d365neti в Telegram

Подписаться

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