2010-10-22 27 views

risposta

42

Queste operazioni possono essere eseguite con DateTime.Add(TimeSpan) poiché supporta tempi passivi positivi e negativi.

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

Oppure è anche possibile utilizzare il metodo DateTime.Subtract(TimeSpan) in modo analogo.

+0

ok così Dove sono andato sbagliato. Ho aggiunto un datetepeper e assegnato il suo valore a una variabile datetime. ora i metodi matematici non vengono visualizzati – Sinaesthetic

+0

@Sinestetico - probabilmente vale la pena postare del codice, questa è una domanda leggermente diversa dall'aritmetica data-ora –

+0

@Sinestetico Quando si utilizza un DateTimePicker, tenere presente che può mostrare _either_ date _or_ time- del giorno, ma mantiene un valore composto da * entrambi * ... se si sta utilizzando la proprietà Value, potrebbe essere necessario sottrarre prima uno o l'altro componente. – Ian

17

Scopri tutti i metodi DateTime qui: http://msdn.microsoft.com/en-us/library/system.datetime.aspx

Add restituisce un nuovo DateTime che aggiunge il valore della TimeSpan specificato sul valore di questa istanza.

AddDays Restituisce un nuovo DateTime che aggiunge il numero specificato di giorni al valore di questa istanza.

AddHours Restituisce un nuovo DateTime che aggiunge il numero specificato di ore al valore di questa istanza.

AddMilliseconds Restituisce un nuovo DateTime che aggiunge il numero specificato di millisecondi al valore di questa istanza.

AddMinutes Restituisce un nuovo DateTime che aggiunge il numero specificato di minuti al valore di questa istanza.

AddMonths Restituisce un nuovo DateTime che aggiunge il numero specificato di mesi al valore di questa istanza.

AddSeconds Restituisce un nuovo DateTime che aggiunge il numero specificato di secondi al valore di questa istanza.

AddTicks Restituisce un nuovo DateTime che aggiunge il numero specificato di zecche al valore di questa istanza.

AddYears Restituisce un nuovo DateTime che aggiunge il numero specificato di anni al valore di questa istanza.

+0

Per tutti quelli che arrivano sopra: Puoi usare queste funzioni sopra e usare un valore negativo per sottrarre, purché l'istanza non sia stata inizializzata su DateTime.MinValue – Kimmax

6

utilizzare l'oggetto TimeSpan per catturare il vostro elemento tempo iniziale e utilizzare i metodi come AddHours o AddMinutes. Per sottrarre 3 ore, farai AddHours(-3).Per sottrarre 45 minuti, si farà AddMinutes(-45)

+0

'Usa l'oggetto TimeSpan per catturare l'elemento temporale iniziale' - intendi 'DateTime'? – Rawling

+0

Mi riferisco a System.TimeSpan tipo –

+1

Ma l'ora iniziale è un istante ad es. 8:00 pm piuttosto che un intervallo di tempo ad es. 45 minuti. (Mi scuso anche, ho appena realizzato quanto è vecchio un post.) – Rawling

7

Questo funziona troppo:

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; 

Per sottrarre un anno:

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

provare questo

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

     } 
    } 
} 
Problemi correlati