0

我正在尝试解析格式的字符串"yyyyMMddHHmmss"时间戳DateTime.ParseExact()。问题是我必须允许“24”的小时值(即小时可以从 0 到 24,其中24 小时表示第二天的 0 小时(天 + 1,小时 = 0)注意:我无法控制输入值。)当然,这会导致异常。
我可以设置任何设置/属性而不是手动解析/使用正则表达式吗?如果没有,任何有效的解析想法?

前任。

DateTime.ParseExact("20120911240000", "yyyyMMddHHmmss", 
   System.Globalization.CultureInfo.InvariantCulture);
4

3 回答 3

3

如果您想手动执行此操作,您可以使用String.Substring()来检测“24”的小时值,然后使用String.Replace将其设置为“00”,然后解析您的日期,然后添加一天(如果是) “24”的小时值是什么意思

于 2012-09-11T21:28:54.190 回答
1

山姆的解决方案很好,但既然你正在使用yyyyMMddHHmmss我会做类似的事情:

bool addDay = false;
DateTime result;
string dtToParse = "20120911240000";

if (dtToParse[8] == '2' && dtToParse[9] == '4')
{
    dtToParse = dtToParse.Substring(0, 8) + "00" + dtToParse.Substring(10);
    addDay = true;
}

result = DateTime.ParseExact(dtToParse, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);

if (addDay) { result = result.AddDays(1); }
于 2012-09-11T22:22:38.060 回答
0

没有简单的标志可以做你想做的事。

但是,这是创建自定义日期时间解析器的方法:

如何为 DateTime 创建和使用自定义 IFormatProvider?

于 2012-09-11T21:35:43.653 回答