如何添加和减去两个日期时间值?

时间:2014-03-17 20:45:05

标签: c# asp.net

任何人都可以告诉我如何添加和减去两个Datetime个对象吗?

这是我的代码

DateTime d1 = Convert.ToDateTime(TextBoxtime1.Text);
DateTime d2 = Convert.ToDateTime(TextBoxtime2.Text);

if (d2 < d1)
{
   DateTime d3 = new DateTime();
   d3= d3.Date.AddHours(24);
   TimeSpan ts = d3 - d1;
   string values = ts.ToString();
   DateTime d5 = Convert.ToDateTime(values);
   DateTime d4 = d5;
   TimeSpan ts1 = d4 - d2;
   TextBox24.Text=ts1.ToString();
   // ...

实际上这两次是出发和到达时间。我希望通过et = d2-d1得到估计的时间,如果是d2

3 个答案:

答案 0 :(得分:1)

DateTime方法(例如您已使用的AddDaysAddHours)也接受负值。

因此,如果您想从某个日期删除12小时,则可以执行此操作:

var newDate = oldDate.AddHours(-12);

这是一种做法;根据您的要求,您可能希望使用TimeSpan方法获取DateTime.Subtract个对象:

var timeSpan = aDate.Subtract(anotherDate);

修改

如果您希望以小时计算两个日期之间的差异,则可以执行以下操作:

var totalHours = Math.Abs(arrivalDateTime.Subtract(departureDateTime).TotalHours);

无论哪个日期是最高值,您总是将总小时数作为正数。

请注意,如果超过一天将两个值分开,结果可能会高于24.这可能是您想要的也可能不是。

答案 1 :(得分:1)

您可以使用

DateTime.Subtract
DateTime.Add 

答案 2 :(得分:0)

DateTime d1 = Convert.ToDateTime(TextBoxtime1.Text);
DateTime d2 = Convert.ToDateTime(TextBoxtime2.Text);

if (d2 < d1)
{
    TimeSpan result = TimeSpan.FromHours(24) + (d2 - d1);
    // ... do as you please with the result
}