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

  • Автор темы Автор темы Greez
  • Дата начала Дата начала

Greez

Client
Регистрация
05.02.2014
Сообщения
85
Реакции
30
Баллы
18
Как конвертировать формат времени ISO 8601 (примеры: PT6M41S, PT52S т.д.) в минуты:секунды или часы:минуты:секунды? Нагуглил какой-то javascript, но он в зенке не срабатывал.
 
Если верить Вики, то формат записи такой:
2005-08-09T18:31:42/P3Y6M4DT12H30M17S
- отрезок времени в 3 года 6 месяцев 4 суток 12 часов 30 минут и 17 секунд, начиная с 9 августа 2005 года 18 часов 31 минуты 42 секунд
Поэтому я думаю придется ручками писать код, чтоб он расшифровывал вторую часть и прибавлял к текущей дате. А такой готовый метод вряд-ли есть.
 
Вообщем чё я придумал... складывать всё в секунды и далее через 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");
 

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