将C#字符串解析为hh:mm:ss

时间:2013-04-05 09:09:08

标签: c#

给出两个字符串

string date = "02Mar13";
string duration = "03.20min";

如何将它们解析为DateTime并以下列格式显示

string date = "02 March 2013";
string duration = "00:03:20";

我查看了here列表,但没有人符合我的要求。

4 个答案:

答案 0 :(得分:5)

您需要使用Custom Date and Time format string解析这些,并使用一个输出:

DateTime dt = DateTime.ParseExact(date + duration, 
                                  "ddMMMyymm.ss'min'", 
                                  CultureInfo.InvariantCulture);

string newDate = dt.ToString("dd MMMM yyyy");
string newDuration = dt.ToString("HH:mm:ss");

需要注意的事项:我使用'min'来表示字符串中的min字面值 - 这是自定义格式字符串的一部分,允许使用内部字符串文字。

答案 1 :(得分:4)

string date = "02Mar13";
string duration = "03.20min";
DateTime newDate = DateTime.ParseExact(date + duration, "ddMMMyymm.ss\\min", null);

date = newDate.ToString("dd MMMM yyyy");
duration = newDate.ToString("hh:mm:ss");

答案 2 :(得分:1)

使用DateTime.ParseExact进行DateTime解析非常简单:

DateTime.ParseExact(date, "ddMMMyy", null).ToString("dd MMMM yyyy"); // "02 March 2013"

至于第二部分,如果语义上是持续时间,则更适合使用TimeSpan.ParseExact(虽然它需要一些摆弄格式字符串):

TimeSpan.ParseExact(duration, "mm\\.ss'min'", null).ToString("hh\\:mm\\:ss"); // "00:03:20"

答案 3 :(得分:1)

如何生成dateResult

        string date = "02Mar13";
        string duration = "03.20min";
        var mat=Regex.Match(duration, "(.+?)min");
        var dateResult = DateTime.ParseExact(date + mat.Groups[1].Value.Replace(".",":"), "ddMMMyyHH:mm", Thread.CurrentThread.CurrentCulture);