C# 中的解析时间超过 24 小时

2023-11-27

假设一个时间戳(只是时间或日期和时间),时间可以滚动到第二天:

00:00:00

01:00:00

23:00:00

24:00:00

25:00:00

有什么方法可以轻松地将其解析为 C# DateTime 并执行结转到第二天的操作?换句话说,“01:00:00”将变为“0001-01-01 01:00:00”,“25:00:00”将变为“0001-01-02 01:00:00”。

EDIT:

我应该提到这失败得很惨(即 FormatException):

DateTime.ParseExact("0001-01-01 25:00:00", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

由于您试图表示任意点的一段时间,而不是特定的日期,因此也许您最好使用系统时间跨度班级?这允许您在构造函数中设置超过 24 小时的值,并且可以与 DateTime 对象一起使用,如下所示:

System.TimeSpan timestamp = new System.TimeSpan(25, 0, 0);
System.DateTime parsedDateTime = new DateTime(0, 0, 0);
parsedDateTime = parsedDateTime.Add(timestamp);
Console.WriteLine(parsedDateTime.ToString("yyyy-MM-dd HH:mm:ss"));  //Output as "0001-01-02 01:00:00"

NOTE:代码未经测试。

EDIT:在解析字符串方面,我想不出任何基本的 .NET 对象可以解析每小时值大于 23 的字符串(因为 25 是一天中的无效小时),但假设格式一致,您可以创建一个非常简单的字符串解析例程(甚至是正则表达式)来单独读取值,并手动加载构造函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的解析时间超过 24 小时 的相关文章

随机推荐