如何在C#中预先存在的时间增加额外的时间?

时间:2016-09-15 18:56:10

标签: c# datetime

我正在尝试在预先存在的时间内添加额外的小时数。当我使用DateTime.Now.AddHours(48)函数添加时,它可以正常工作......这会增加48小时到当前时间。

但我无法解决的问题是将时间增加到过去或将来的时间。

例如,在" CheckInTime"下面的代码中,我试图将48小时添加到预先存在的时间(不是当前时间)。 " CheckInTime"可能是9/14/2016 9:16:00 PM,我需要增加48小时到那个时间。哪个应该是9/16/2016 9:16:00 PM

这是一个C#代码。

DateTime? FutureTime;
DateTime? CheckInTime;

if (duration.Contains("48")) // duration is a time blocks (12 or 24 or 48)hrs
 {
   // add 48 hrs from current time
   FutureTime= DateTime.Now.AddHours(48); 

   // should add 48 hrs to the pre-existing time(past or future.)
   CheckInTime= GameSchedule.CheckInTime.AddHours(48); 
  }
  else if (...) // Other code...
  ....

我想要完成的任务:在现有时间(未来或过去)中添加小时数。

EG:

CheckInTime= GameSchedule.CheckInTime.AddHours(48);
//where CheckinTime has past of future time. I want to add 48 hours.

1 个答案:

答案 0 :(得分:3)

CheckInTimeDateTime? - Nullable type - 不是DateTime。因此,您需要首先提取其Value

if (CheckInTime != null) 
{
    CheckInTime = CheckInTime.Value.AddHours(48);
}
else
{
    // Do whatever you want to do when CheckInTime has not been set yet.
}

注意:您可以直接将AddHoursDateTime)的结果分配给CheckInTimeDateTime?),因为存在隐式转换从每种普通类型到可空类型。

如果您使用的是Roslyn或更高版本,您还可以使用?.运算符代替if检查:

// Yields null if CheckInTime is null; otherwise, yields the result of the method
// invocation.
CheckInTime = CheckInTime?.AddHours(48);