2015-11-30 14 views
9

Sto creando un DateTime aggiungendo un giorno alla data corrente (mostrato sotto). Ho bisogno del tempo specifico impostato come mostrato di seguito. Questo codice sotto funziona alla grande fino alla fine del mese in cui sto cercando di aggiungere un giorno.Come aggiungere giorno a DateTime alla fine del mese?

Puoi aiutarmi a cambiare il mio codice in modo che funzioni quando il giorno corrente è alla fine di un mese e sto cercando di aggiungere un giorno in modo che passi al 1 ° dicembre anziché il 31 novembre (ad esempio) e genera un errore.

var ldUserEndTime = new DateTime(dateNow.Year, dateNow.Month, dateNow.Day + 1, 00, 45, 00); 
+6

Invece di creare un 'DateTime' con valori espliciti, prova a usare' dateNow.AddDays (1) ' –

+0

https://msdn.microsoft.com/en-us/library/c0ccada e% 28v = vs.110% 29.aspx – demkalkov

+0

O forse 'var ldUserEndTime = DateTime.Today.AddHours (24.75);'. Quello è 24 ore e tre quaters di un'ora. –

risposta

2
var ldUserEndTime = DateTime.Today + new TimeSpan(1, 0, 45, 0); 
+0

Grazie Gary e tutti, ho usato questo e ha funzionato perfettamente !! – Andy

6

Forse qualche tipo di approccio ibrido avrebbe funzionato meglio per voi in modo da poter ottenere la componente temporale e aggiungere il giorno senza avere la difficoltà alla fine del mese:

var ldUserEndTime = new DateTime(dateNow.Year, dateNow.Month, dateNow.Day, 00, 45, 00).AddDays(1); 

Il metodo AddDays terrà automaticamente conto del rollover del mese, quindi se oggi è la fine del mese (hey, lo è!), otterrai 2015-12-01 12:45:00.

13

È sufficiente utilizzare DateTime.AddDays method utilizzando Date property per ottenere è mezzanotte e aggiungere 45 minuti.

var ldUserEndTime = dateNow.AddDays(1).Date.AddMinutes(45); 

Dal momento che non v'è un 31 ° giorno in November, questo costruttore getta eccezione.

Dalla sezione Eccezione nella pagina DateTime(Int32, Int32, Int32, Int32, Int32, Int32);

ArgumentOutOfRangeException - giorno è inferiore a 1 o maggiore del numero di giorni nel mese

2

Questo dovrebbe fare il trucco:

DateTime ldUserEndTime = DateTime.Today.AddDays(1).AddMinutes(45); 
Problemi correlati