我希望能解析一个包含时间、日期和时间或只有日期的输入字符串,并且我需要知道哪些部分包含在输入字符串中。
解析实际值并不是问题:
解析实际值并不是问题:
var dt1 = DateTime.Parse("10:00:00", CultureInfo.CurrentCulture);
var dt2 = DateTime.Parse("10pm", CultureInfo.CurrentCulture);
var dt3 = DateTime.Parse("01/02/2014", CultureInfo.CurrentCulture);
var dt4 = DateTime.Parse("01/02/2014 10:00:00", CultureInfo.CurrentCulture);
所有这些都可以成功解析,就像你期望的那样。
然而,如果没有提供日期元素,DateTime.Parse会自动将当前日期添加到时间中。因此,如果今天是2014年1月1日,则DateTime.Parse("10pm")
实际上返回一个设置为2014年1月1日10:00:00的DateTime对象。
另外,如果我解析一个没有时间元素的输入字符串,那么DateTime.Parse会假定时间为00:00:00。
因此,在解析完成后,仅通过检查生成的DateTime对象,我无法确定原始输入字符串是否指定了日期和时间,仅指定了日期或仅指定了时间。
我可以使用简单的正则表达式查找标准时间模式,例如^\d\d:\d\d$
,但我不想假设所有文化都使用相同的模式来指定时间。
如何在不使用某些可能仅适用于某些文化的模糊正则表达式的情况下,强大地检测出原始输入字符串中提供的日期和时间元素?
DateTime
。 - Steve