2011-05-31 45 views

回答

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這樣的輸入。

+0

這正是我想要的。 Yuo're太棒了! Thx lasseespeholt ..非常感謝 – Alessandro 2011-05-31 17:07:21

+0

@Alessandro非常歡迎:) – 2011-05-31 17:45:48

+0

爲了更加靈活,模式應該是(\ d +):(\ d {2})'以匹配3:05,3 :00 123:01等等。有人可能會爭辯說,對於會議記錄來說,它應該是靈活的WRT,但是沒有多少人將時間表示爲H:M,通常至少是H:MM。 – 2011-05-31 18:03:13