Преобразовать строковое время в обычное значение времени, заменив час на правильный - PullRequest
1 голос
/ 31 мая 2011

У меня есть следующие примеры строковых значений:

24:05 , 25:08 , 26:59

, и мне нужна функция или что-то еще, чтобы получить правильное значение времени (чч: мм), например:

00:05 , 01:08 , 02:59

Есть ли в C # метод, который делает это?

Пожалуйста, помогите мне, я сойду с ума от этого !!

Спасибо!Ура .. Алессандро

1 Ответ

3 голосов
/ 31 мая 2011

С помощью регулярного выражения вы можете сделать это так:

var match = Regex.Match("25:05", @"^(\d{2,}):(\d{2})$");
var hour = int.Parse(match.Groups[1].Value) % 24;
var min = int.Parse(match.Groups[2].Value);

// hour will be 1 and min 5

Если вы хотите избежать регулярных выражений, то простые input.IndexOf() и input.SubString() сделают это.

Обновление: Если вам нужен метод для него, взгляните на это:

static TimeSpan ParseHHMM(string input)
{
    var match = Regex.Match(input, @"^(\d{2,}):(\d{2})$");
    var hour = int.Parse(match.Groups[1].Value) % 24;
    var min = int.Parse(match.Groups[2].Value);

    return new TimeSpan(hour, min, 0);
}

// Write to console
Console.WriteLine(ParseHHMM("25:05").ToString(@"hh\:mm"));

Обновление: Я изменил \d{2} на \d{2,} для часовой части. Это означает, что теперь он может принимать данные типа 125:05.

...