С помощью регулярного выражения вы можете сделать это так:
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
.