C#日期时间运算符+=

C#日期时间运算符+=,c#,datetime,sum,C#,Datetime,Sum,我有两个DateTime类型的变量,我想求和,我该怎么做? 我得到的编译错误是DateTime没有运算符+=您不能同时添加两个DateTime值。这没有任何意义。DateTime表示单个时间点,而TimeSpan表示持续时间。将时间点添加到持续时间会导致另一个时间点。只能将TimeSpan值添加到DateTime值中–在这种情况下,它确实支持+=: dateTime += timeSpan; 只是为了回答Mehrdad回答中的评论-是的,看起来它们都应该被视为TimeSpans,而不是Date

我有两个DateTime类型的变量,我想求和,我该怎么做?
我得到的编译错误是DateTime没有运算符+=

您不能同时添加两个
DateTime
值。这没有任何意义。
DateTime
表示单个时间点,而
TimeSpan
表示持续时间。将时间点添加到持续时间会导致另一个时间点。只能将
TimeSpan
值添加到
DateTime
值中–在这种情况下,它确实支持
+=

dateTime += timeSpan;

只是为了回答Mehrdad回答中的评论-是的,看起来它们都应该被视为
TimeSpan
s,而不是
DateTime
值。。。是的,你也可以把时间跨度加在一起

如果您使用的是.NET 4,则可以使用自定义格式字符串来解析行的第一部分,例如“00:00:01.2187500”

示例代码:

using System;
using System.Globalization;

public class Test
{
    static void Main()
    {
        string line1 = "00:00:01.2187500 CA_3";
        string line2 = "00:00:01.5468750 CWAC_1";

        TimeSpan sum = ParseLine(line1) + ParseLine(line2);
        Console.WriteLine(sum);
    }

    static TimeSpan ParseLine(string line)
    {
        int spaceIndex = line.IndexOf(' ');
        if (spaceIndex != -1)
        {
            line = line.Substring(0, spaceIndex);
        }
        return TimeSpan.ParseExact(line, "hh':'mm':'ss'.'fffffff",
                                   CultureInfo.InvariantCulture);
    }
}
您可以使用:


我有那些行:00:00:01.2187500 CA_3 00:00:01.5468750 CWAC_1它们在一个文件中。我可以把时间读作timeSpan并添加它们吗?@ahront:
timeSpan
有一组构造函数,需要几年、几个月、几天、几小时。。。就像
DateTime
。因此,是的,您应该将持续时间值读取为
TimeSpan
,并将其添加到
DateTime
@Merhrdad:Err,不可以。您不能在
TimeSpan
构造函数中使用年或月,因为它们不是实际的度量单位(长度不同)。@Adam:嗯,您说得对。我疯了。你可以使用
days
,这应该是可行的。顺便看看讨论,什么是CA_3和CWAC_1?它们是标准的还是仅仅是OP输入格式?@Mehrdad:我对它们并不熟悉。我假设它们不重要:)@ahapront:你没有使用.NET4吗?如果没有,我会有点惊讶,因为您不能指定自己的格式字符串(据我所知)
DateTime D1 = DateTime.Today;
DateTime D2 = DateTime.Today.AddMonths(2);

double days = D1.ToOADate() + D2.ToOADate();