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

C# 最简单的时间减法是什么?,c#,datetime,math,timespan,C#,Datetime,Math,Timespan,我正在尝试组合一个工具来帮助我制定工作计划。解决以下问题的最简单方法是什么 上午8:00+5小时=下午1:00 及 下午5:00-2小时=下午3:00 及 下午5:30-:45=4:45 等等 这些都可以用来完成,因为它支持正时间跨度和负时间跨度 DateTime original = new DateTime(year, month, day, 8, 0, 0); DateTime updated = original.Add(new TimeSpan(5,0,0)); DateTime o

我正在尝试组合一个工具来帮助我制定工作计划。解决以下问题的最简单方法是什么

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

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

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


等等

这些都可以用来完成,因为它支持正时间跨度和负时间跨度

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));

或者您也可以类似地使用该方法。

在此处查看所有DateTime方法:

Add
返回一个新的日期时间,该日期时间将指定时间跨度的值添加到此实例的值

AddDays
返回一个新的日期时间,将指定的天数添加到此实例的值中

AddHours
返回一个新的日期时间,将指定的小时数添加到此实例的值

addmillizes
返回一个新的日期时间,将指定的毫秒数添加到此实例的值

AddMinutes
返回一个新的日期时间,将指定的分钟数添加到此实例的值

AddMonths
返回一个新的日期时间,将指定的月数添加到此实例的值

AddSeconds
返回一个新的日期时间,将指定的秒数添加到此实例的值

AddTicks
返回一个新的日期时间,将指定数量的ticks添加到此实例的值中

AddYears
返回一个新的日期时间,将指定的年数添加到此实例的值


使用TimeSpan对象捕获初始时间元素,并使用
AddHours
AddMinutes
等方法。要减去3小时,您将执行
AddHours(-3)
。要减去45分钟,您将执行
AddMinutes(-45)

此操作也有效:

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;
减去一年:

DateTime DateEnd = DateTime.Now;
DateTime DateStart = DateEnd - new TimeSpan(365, 0, 0, 0);
试试这个

namespace dateandtime
{

    class DatesTime
    {

        public static DateTime Substract(DateTime now, int hours,int minutes,int seconds)
        {
            TimeSpan T1 = new TimeSpan(hours, minutes, seconds);
            return now.Subtract(T1);
        }


        static void Main(string[] args)
        {
            Console.WriteLine(Substract(DateTime.Now, 36, 0, 0).ToString());

        }
    }
}

嗨,若你们想从DateTime中只减去整数值,那个么你们必须这样写代码

DateTime.Now.AddHours(-2)

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

好的,那么我错在哪里了。我添加了一个datetimepicker,并将其值赋给datetime变量。现在数学方法没有显示出来up@Sinaesthetic-可能值得发布一些代码,这是一个与日期时间略有不同的问题arithmetic@Sinaesthetic当您使用DateTimePicker时,请记住它可以显示一天中的日期或时间,但会维护一个由这两者组成的值。。。如果使用Value属性,可能需要先减去一个或另一个分量。在第三个示例中,OP想要减去45分钟,为什么在这个答案中我没有看到负值?这是一个错误吗?是的,感谢您发现
使用TimeSpan对象捕获您的初始时间元素
-您的意思是
日期时间
?我指的是System.TimeSpan类型,但初始时间是一个瞬间,例如8:00pm,而不是一个时间跨度,例如45分钟。(也很抱歉,我刚刚意识到这是一篇多么古老的帖子。)但这就是我的意思。您将为上午8点编写ts=new TimeSpan(8,0,0)或为晚上8点编写ts=new TimeSpan(20,0,0),然后您将执行ts.AddMinutes(45)Eh。。。如果你真的不在乎日期,我想这也行,但这在语义上不是timespan所代表的,它确实会提高你的评级。对于所有涉及到这一点的人:你可以使用上面的函数并使用负值进行减法,只要实例没有初始化为DateTime.MinValue