0

给定两个字符串

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

我如何解析它们DateTime并以以下格式显示它们

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

我浏览了这里的列表,但没有一个符合我的要求。

4

4 回答 4

5

您需要使用自定义日期和时间格式字符串解析这些,并使用一个输出:

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字符串中的文字 - 这是自定义格式字符串的一部分,允许内部字符串文字。

于 2013-04-05T09:18:02.913 回答
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");
于 2013-04-05T09:15:31.890 回答
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"
于 2013-04-05T09:16:23.277 回答
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);
于 2013-04-05T09:19:43.193 回答