在 C# 中使用 addHours() 将持续时间添加到日期

Add time duration to date using addHours() in c#

我想将持续时间添加到我的日期时间变量。我正在从 csv 文件中读取持续时间。持续时间的格式为 0:29:40 或 1:29:40。当我将它添加到 datetime 变量时,它给出了格式不正确的异常。如何使用这种格式添加持续时间。以前我的持续时间是一个简单的整数,比如“6”或“7”,但现在格式是这样的“0:29:40”我不知道如何更改我的代码以适应这种格式。

以前我是这样做的

 double hours = Convert.ToDouble(row.Cells[2].Value.ToString());
            DateTime newdate = finaldate.AddHours(hours);

row.Cells[2].Value.ToString() 从 csv 中读取值

感谢任何帮助,谢谢

您不需要解析为双精度数。解析为 TimeSpan。类似于:

var source = "0:29:40";
var ts = TimeSpan.Parse(source);

现在ts是你的时间跨度。 TimeSpan 的好处是你可以将它添加到 DateTime:

DateTime newdate = finaldate + ts;

您将需要使用 TimeSpan.Parse() or TimeSpan.ParseExact() 方法正确解析您的字符串,然后简单地将 TimeSpan 结果添加到您现有的日期:

var time = TimeSpan.Parse(row.Cells[2].Value.ToString());
DateTime newDate = finalDate.Add(time);

如果您需要明确指定每个时间值代表什么,那么 TimeSpan.ParseExact() 方法将允许您提供格式化字符串来指定:

// This will assume that 1:29:40 is hours, minutes, and seconds
var time = TimeSpan.ParseExact(row.Cells[2].Value.ToString(), @"h\:m\:s", null);