E
E
estry2020-08-03 10:29:10
C++ / C#
estry, 2020-08-03 10:29:10

How to parse minutes and seconds from a string and convert to a string to be passed to TimeSpan C#?

There is a line: PT72M41S
Where 72 means minutes and 41 seconds.
How to parse this line into a line like 1:12:41?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
L
LoliDeveloper, 2020-08-03
@estry

With an array of characters, it is probably possible with some expressions, but this is also possible

string str = "PT7M4S";
            char[] symbols = { '0','1','2','3','4','5','6','7','8','9' }; //определяем возможные значения времени
            int quanMin; //тут храним сколько знаков отводится на минуты
            int quanSec; //на секунды
            if (str.IndexOfAny(symbols, 3) == 3)// проверяем сколько знаков отводится под минуты
                {
                    quanMin = 2;  //если под индексом 3 в строке находится цифра
                }
                else 
                {
                    quanMin = 1;  //если под индексом 3 в строке не цифра
                }

                if (quanMin == 1) // проверяем сколько знаков отводится под секунды с учётом того, сколько отвели под минуты
                {
                    quanSec = str.IndexOfAny(symbols, 5) == 5 ? 2 : 1; //индекс сдвигается, в зависимости от колличества знаков, отведённых под минуты
                }
                else
                {
                    quanSec = str.IndexOfAny(symbols, 6) == 6 ? 2 : 1; 
                }
                TimeSpan timespan = new TimeSpan(0, int.Parse(str.Substring(2, quanMin)), int.Parse(str.Substring((quanMin == 1 ? 4 : 5), quanSec))); //создаём объект TimeSpan
                Console.WriteLine(timespan); //вывод
            //=>00:07:04

T
Timur Pokrovsky, 2020-08-03
@Makaroshka007

string str = "PT72M41S";

TimeSpan timeSpan = new TimeSpan(0, int.Parse(str.Substring(2, 2)), int.Parse(str.Substring(5, 2)));

Console.WriteLine(timeSpan); //=> 01:12:41

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question