2010-10-22 62 views

Respuesta

42

Todo esto se puede hacer con DateTime.Add(TimeSpan) ya que admite intervalos de tiempo 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 se puede utilizar el método DateTime.Subtract(TimeSpan) análoga.

+0

bien así que ¿de dónde me incorrecto. Agregué un datetimepicker y le asigné su valor a una variable datetime. ahora los métodos matemáticos no se muestran – Sinaesthetic

+0

@Sinaesthetic - probablemente valga la pena publicar un código, esta es una pregunta ligeramente diferente a la aritmética de fecha y hora –

+0

@Sinaesthetic Cuando use un DateTimePicker, tenga en cuenta que puede mostrar _either_ date _or_ time- de hoy, pero mantiene un valor compuesto por * both * ... si está utilizando la propiedad Value, es posible que deba restar uno o el otro componente primero. – Ian

17

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

Add devuelve una nueva DateTime que se suma el valor de la TimeSpan especificada en el valor de esta instancia.

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

AddHours Devuelve un nuevo DateTime que agrega el número de horas especificado 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 una nueva DateTime que se suma el número de meses especificado en el valor de esta instancia.

AddSeconds Devuelve un nuevo DateTime que agrega el número de segundos especificado 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.

+0

Para todos los que se acerquen a esto: Puede usar estas funciones arriba y usar un valor negativo para restar, siempre que la instancia no se haya inicializado a DateTime.MinValue – Kimmax

6

utilizar el objeto TimeSpan para capturar su elemento del tiempo inicial y el uso de los métodos como AddHours o AddMinutes. Para restar 3 horas, harás AddHours(-3).Para restar 45 minutos, que va a hacer AddMinutes(-45)

+0

'Use el objeto TimeSpan para capturar su elemento de hora inicial' - ¿quieres decir 'DateTime'? – Rawling

+0

Me refiero a System.TimeSpan tipo –

+1

Pero la hora inicial es un instante, p. 8:00 p.m. en lugar de un lapso de tiempo, por ejemplo, 45 minutos. (También disculpas, me acabo de dar cuenta de la antigüedad de esta publicación) – Rawling

7

Esto funciona también:

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

probar este

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

     } 
    } 
} 
Cuestiones relacionadas