Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Rolich от 10 Июля 2023, 12:11:27

Название: Суммирование времени в отчётах
Отправлено: Rolich от 10 Июля 2023, 12:11:27
Добрый день, уважаемые форумчане
В проекте имеется глобальная переменная, типа DateTime, в которую несколько раз в сутки записывается длительность определённых событий
Вопрос: как подсчитать общую длительность события по этой переменной в отчёте ?
Название: Re: Суммирование времени в отчётах
Отправлено: Simple_Scada от 12 Июля 2023, 13:00:01
Здравствуйте.

Если Вы создаете отчет по примеру "Время наработки / простоя (https://simple-scada.com/help/report/rep-time-work-idle.html)", то общую длительность можно вычислить в итоге отчета, как это описано в данной теме (https://simple-scada.com/forum/index.php?topic=1555.msg11473#msg11473). Если такой вариант не подходит, то пришлите на support@simple-scada.com для проверки текущую версию проекта, укажите отчет и переменную, по которой нужно вычислить общую длительность.
Название: Re: Суммирование времени в отчётах
Отправлено: Rolich от 12 Июля 2023, 14:45:05
Тут не получилось, отписался в личку
Название: Re: Суммирование времени в отчётах
Отправлено: Rolich от 18 Июля 2023, 12:40:54
Доброго всем времени суток
Вопрос подсчёта длительности событий решил путём накопления секунд событий нарастающим итогом, а потом вычисления их разности в отчёте
Теперь есть вопрос по форматированию выводимой информации
Сейчас используется выражение
{new DateTime().AddSeconds(Данные.Peremennaya_Prostoya).ToString("HH:mm:ss")}
Это работает, выводит значение в заданном формате времени
Но вот если отчёт строится за длительный период, значение длительности может переваливать за 24 часа и тогда значение формируется неправильно, при переходе через 24 часа обнуляется
Как сделать так, чтобы отображалось фактическое количество часов простоя, более 24 часа ?
Название: Re: Суммирование времени в отчётах
Отправлено: Simple-Scada от 19 Июля 2023, 16:01:37
Здравствуйте.

Вывод в формате часы:минуты:секунды:
Код: (c#)
{(int)TimeSpan.FromSeconds(Данные.Peremennaya_Prostoya).TotalHours + ":" +
 TimeSpan.FromSeconds(Данные.Peremennaya_Prostoya).ToString("mm\:ss")}
, подходит для количества часов больше 24. Т.е. результатом может быть "26:15:00".

Вывод в формате "дни.часы:минуты:секунды":
Код: (c#)
{TimeSpan.FromSeconds(Данные.Peremennaya_Prostoya).ToString("dd\.hh\:mm\:ss")}
пример: 01.12:15:00
Название: Re: Суммирование времени в отчётах
Отправлено: Rolich от 20 Июля 2023, 07:12:35
Большое спасибо !