C #: ¿cuál es la forma más fácil de restar tiempo?

Estoy tratando de armar una herramienta que me ayude a hacer los horarios de trabajo. ¿Cuál es la forma más fácil de resolver lo siguiente?

8:00 a.m. + 5 horas = 1:00 p.m.

y

5:00 p.m. – 2 horas = 3:00 p.m.

y

5:30 p.m. -: 45 = 4:45

y así.

Todo esto se puede hacer con DateTime.Add(TimeSpan) ya que admite timespans positivos y negativos.

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

O también puede usar el método DateTime.Subtract(TimeSpan) forma análoga.

Consulte todos los métodos DateTime aquí: http://msdn.microsoft.com/en-us/library/system.datetime.aspx

Add Devuelve un nuevo DateTime que agrega el valor del TimeSpan especificado al valor de esta instancia.

AddDays Devuelve un nuevo DateTime que agrega el número especificado de días al valor de esta instancia.

AddHours Devuelve un nuevo DateTime que agrega la cantidad especificada de horas al valor de esta instancia.

AddMilliseconds Devuelve un nuevo DateTime que agrega la cantidad especificada de milisegundos al valor de esta instancia.

AddMinutes Devuelve un nuevo DateTime que agrega la cantidad de minutos especificada al valor de esta instancia.

AddMonths Devuelve un nuevo DateTime que agrega el número especificado de meses al valor de esta instancia.

AddSeconds Devuelve un nuevo DateTime que agrega el número especificado de segundos al valor de esta instancia.

AddTicks Devuelve un nuevo DateTime que agrega el número especificado de tics al valor de esta instancia.

AddYears Devuelve un nuevo DateTime que agrega la cantidad de años especificada al valor de esta instancia.

Esto también funciona:

 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; 

Para restar un año:

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

Utilice el objeto TimeSpan para capturar su elemento de tiempo inicial y use los métodos como AddHours o AddMinutes . Para restar 3 horas, harás AddHours(-3) . Para restar 45 minutos, hará AddMinutes(-45)

prueba esto

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