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

时间:2010-10-22 01:20:09

标签: c# datetime math timespan

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

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

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

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

等等。

6 个答案:

答案 0 :(得分:50)

这些都可以用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));

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

答案 1 :(得分:23)

在此处查看所有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,它将指定的刻度数添加到此实例的值中。

     

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

答案 2 :(得分: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;

减去一年:

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

答案 3 :(得分:6)

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

答案 4 :(得分: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());

        }
    }
}

答案 5 :(得分:0)

嗨,如果您要从DateTime中仅减去Integer值,则必须编写这样的代码

DateTime.Now.AddHours(-2)

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