2011-11-01 12 views

risposta

27

Volete DateTime.Today.AddHours(16)

DateTime.Today tornerà data odierna a mezzanotte.
È inoltre possibile utilizzare la proprietà Date per eliminare l'ora da un valore arbitrario DateTime.

+0

Quindi cosa succede alle 1:00 quando viene eseguito? Sembra che fisserà il tempo per il giorno successivo alle 4 del mattino. Non mi sembra giusto – Cole9350

+2

@ Cole9350: No; ritornerà alle 16:00. – SLaks

3
var anotherTime = DateTime.Today.AddHours(16.0); 
11

Penso che questo dovrebbe fare quello che ti serve ...

DateTime now = DateTime.Now; 
DateTime dt = new DateTime(now.Year, now.Month, now.Day, 16, 0, 0); 
+2

Questo è 4 AM, non PM. –

+0

@AnthonyPegram: Cheers, lo odio quando ciò accade (cervello/dita fuori sincrono) – musefan

2

Date un'occhiata a tutte le overloaded constructors per DateTime.

DateTime myDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 16, 0, 0); 

Modifica: correzione. Grazie Jon. :)

+1

Sovraccarico, non sovrascritto. I costruttori non possono essere sovrascritti in quanto non sono polimorfici per iniziare. –

+1

Cosa succede se viene eseguito così vicino a mezzanotte che la prima chiamata di oggi è diversa da una successiva? – musefan

+0

@musefan: immagino che possa succedere di tutto. Ma l'OP diceva * oggi * a mezzanotte, quindi se questo codice funziona alle 23:59, allora memorizzerà la data di oggi alle 16:00. È possibile memorizzare DateTime.Today in una variabile separata prima e fare riferimento a ciò. Oppure potresti semplicemente usare l'esempio di SLaks che mi piace di più comunque. –

Problemi correlati