1

我有以下示例字符串值:

24:05 , 25:08 , 26:59

我需要一个函数或其他东西来获得正确的时间值(hh:mm),例如:

00:05 , 01:08 , 02:59

C# 中是否有这样做的方法?

请帮帮我,我要疯了!

谢谢!干杯..亚历山德罗

4

1 回答 1

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.

于 2011-05-31T16:48:34.807 回答