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

标签 c# datetime

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

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/

相关文章:

c# - 在 C# 中解析不可能的日期

vb.net - Ultragrid 列中的日期时间格式

c# - 阻止 Ninject 自动绑定(bind) Func<T, T, bool>

c# - 从 JsonResult 中检索对象列表并发送到数据库

c# - NLog MappedDiagnosticsLogicalContext 不工作在异步/等待与 ConfigureAwait(false)

c# - 大O分析。非负数组中的最大整数

c# - DataGridView 清除并重新获得焦点

c++ - 如何找到两个日期之间以秒和纳秒为单位的时间差?

c# - 计算一段时间内每小时的分钟数

MySQL alter table 并将数据从文本转换为日期时间