我有以下示例字符串值:
24:05 , 25:08 , 26:59
我需要一个函数或其他东西来获得正确的时间值(hh:mm),如:
00:05 , 01:08 , 02:59
C#中有一个方法可以做到吗?
请帮助我,我会对此感到疯狂!!
THX! 干杯.. 的Alessandro
答案 0 :(得分:3)
使用正则表达式,你可以这样做:
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
等输入。