给定两个字符串
string date = "02Mar13";
string duration = "03.20min";
我如何解析它们DateTime
并以以下格式显示它们
string date = "02 March 2013";
string duration = "00:03:20";
我浏览了这里的列表,但没有一个符合我的要求。
您需要使用自定义日期和时间格式字符串解析这些,并使用一个输出:
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
字符串中的文字 - 这是自定义格式字符串的一部分,允许内部字符串文字。
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");
使用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"
如何产生 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);