假设一个时间戳(只是时间或日期和时间),时间可以滚动到第二天:
00:00:00 <- midnight
01:00:00 <- 1 AM
23:00:00 <- 11 PM
24:00:00 <- midnight, day + 1
25:00:00 <- 1 AM, day + 1
有什么方法可以轻松地将其解析为 C# DateTime 以执行结转至第二天?换句话说,“01:00:00”将变为“0001-01-01 01:00:00”,“25:00:00”将变为“0001-01-02 01:00:00”。
编辑:
我应该提到这失败得很惨(即 FormatException):
DateTime.ParseExact("0001-01-01 25:00:00", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
最佳答案
由于您试图表示从任意时间点开始的一段时间,而不是作为特定日期,也许您最好使用 System.TimeSpan类(class)?这允许您在构造函数中设置超过 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"
注意:代码未经测试。
编辑: 在解析字符串方面,我想不出有任何基本的 .NET 对象可以解析每小时值大于 23 的字符串(因为 25 是天),但假设格式一致,您可以创建一个非常简单的字符串解析例程(甚至是正则表达式)来单独读取值,然后手动加载构造函数。
关于c# - C# 中超过 24 小时的解析时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208607/