C#:减去时间的最简单方法是什么?

Sin*_*tic 26 c# math datetime timespan

我正在尝试整理一个可以帮助我制定工作计划的工具.解决以下问题的最简单方法是什么?

上午8:00 + 5小时=下午1:00

下午5:00 - 2小时=下午3:00

下午5:30 - :45 = 4:45

等等.

Ste*_*end 52

这些都可以完成,DateTime.Add(TimeSpan)因为它支持正面和负面的时间跨度.

DateTime original = new DateTime(year, month, day, 8, 0, 0);
DateTime updated = original.Add(new TimeSpan(5,0,0));

DateTime original = new DateTime(year, month, day, 17, 0, 0);
DateTime updated = original.Add(new TimeSpan(-2,0,0));

DateTime original = new DateTime(year, month, day, 17, 30, 0);
DateTime updated = original.Add(new TimeSpan(0,45,0));
Run Code Online (Sandbox Code Playgroud)

或者您也可以DateTime.Subtract(TimeSpan)类似地使用该方法.


DJ *_*mby 24

在这里查看所有DateTime方法:http://msdn.microsoft.com/en-us/library/system.datetime.aspx

Add 返回一个新的DateTime,它将指定TimeSpan的值添加到此实例的值.

AddDays 返回一个新的DateTime,它将指定的天数添加到此实例的值中.

AddHours 返回一个新的DateTime,它将指定的小时数添加到此实例的值中.

AddMilliseconds 返回一个新的DateTime,它将指定的毫秒数添加到此实例的值中.

AddMinutes 返回一个新的DateTime,它将指定的分钟数添加到此实例的值中.

AddMonths 返回一个新的DateTime,它将指定的月数添加到此实例的值中.

AddSeconds 返回一个新的DateTime,它将指定的秒数添加到此实例的值中.

AddTicks 返回一个新的DateTime,它将指定的tick数添加到此实例的值中.

AddYears 返回一个新的DateTime,它将指定的年数添加到此实例的值中.

  • 对于遇到此问题的每个人:只要实例尚未初始化为DateTime.MinValue,就可以在上面使用这些函数,并使用负值减去。 (2认同)

rbo*_*man 7

这也有效:

System.DateTime dTime = DateTime.Now();

// tSpan is 0 days, 1 hours, 30 minutes and 0 second.
System.TimeSpan tSpan = new System.TimeSpan(0, 1, 3, 0); 

System.DateTime result = dTime + tSpan;
Run Code Online (Sandbox Code Playgroud)

减去一年:

DateTime DateEnd = DateTime.Now;
DateTime DateStart = DateEnd - new TimeSpan(365, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)


Fad*_*man 6

使用TimeSpan对象捕获初始时间元素并使用诸如AddHours或之类的方法AddMinutes.要减去3个小时,你就可以做到AddHours(-3).要减去45分钟,你会做到AddMinutes(-45)


小智 6

嗨,如果您只想从 DateTime 中减去 Integer 值,那么您必须编写这样的代码

DateTime.Now.AddHours(-2)
Run Code Online (Sandbox Code Playgroud)

在这里,我从当前日期和时间中减去 2 小时