Формат времени ISO 8601 сконвертировать в hh:mm:ss / mm:ss

Greez

Client
Регистрация
05.02.2014
Сообщения
82
Благодарностей
29
Баллы
18
Как конвертировать формат времени ISO 8601 (примеры: PT6M41S, PT52S т.д.) в минуты:секунды или часы:минуты:секунды? Нагуглил какой-то javascript, но он в зенке не срабатывал.
 

gevolushn

Известная личность
Регистрация
25.03.2019
Сообщения
518
Благодарностей
269
Баллы
63
Если верить Вики, то формат записи такой:
2005-08-09T18:31:42/P3Y6M4DT12H30M17S
- отрезок времени в 3 года 6 месяцев 4 суток 12 часов 30 минут и 17 секунд, начиная с 9 августа 2005 года 18 часов 31 минуты 42 секунд
Поэтому я думаю придется ручками писать код, чтоб он расшифровывал вторую часть и прибавлял к текущей дате. А такой готовый метод вряд-ли есть.
 

Greez

Client
Регистрация
05.02.2014
Сообщения
82
Благодарностей
29
Баллы
18
Вообщем чё я придумал... складывать всё в секунды и далее через C# конвертировать в hh:mm:ss

1) Регулярки для взятия часов, минут и секунд из строки формата ISO 8601. Из них потом надо удалить буквы, как брать сразу числа не сумел.
Код:
\d+H
\d+M
\d+S
2) Вычисление через JavaScript, если одна из переменных пустая надо задать 0, иначе будет ошибка.
Код:
{-Variable.hours-}*3600+{-Variable.minutes-}*60+{-Variable.seconds-}
3) C# для конвертации, переменная "text", взял из этой темы и чуток переделал.
Код:
TimeSpan t = TimeSpan.FromSeconds(Convert.ToDouble(project.Variables["text"].Value));
return t.ToString(@"hh\:mm\:ss");
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)