如何解析小时0到24的字符串时间戳

时间:2012-09-11 21:23:27

标签: c# .net datetime

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

离。

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

3 个答案:

答案 0 :(得分:3)

如果您想手动执行此操作,可以使用String.Substring()检测小时值“24”,然后使用String.Replace将其设置为“00”,然后解析日期,然后如果这是小时值“24”意味着

,请添加一天

答案 1 :(得分:1)

Sam的解决方案很好,但是因为你使用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); }

答案 2 :(得分:0)

没有简单的旗帜可以做你想做的事。

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

How to create and use a custom IFormatProvider for DateTime?