2011-08-18 13 views
5

Come creare dinamicamente un oggetto DateTime, che ha sempre il mese/giorno/anno corrente, ma ha sempre il componente orario 16:00?Creazione di data/ora in C#

+1

Attenzione; vuoi assicurarti di prendere una decisione deliberata sul fatto che tu voglia le 16:00 nel fuso orario locale o alle 16:00 GMT. 24 su 25 fusi orari saranno diversi dal tuo;) –

risposta

7

Si può fare questo:

var today = DateTime.Today.AddHours(16); 

che dovrebbe essere tutto ciò che è oggi alle ore 16:00 (04:00)

+0

Mentre entrambe le risposte correggo, mi piace meglio @Tejs poiché chiama solo DateTime.Today una volta. In questo modo non deve generare oggi 3 volte. (Oggi si risolve in DateTime.Now.Date) –

+0

@James Michael Hare: aggiornato la mia risposta - dubito fortemente che faccia qualche differenza significativa - ma hey ..... –

+0

@marc_s: immagino che sia simile a molte altre prestazioni dibattiti. Una chiamata qui o là non vedrai la differenza, ma se viene eseguita ripetutamente potrebbe aggiungere un sovraccarico, anche se piccolo. Come ho detto, entrambi sono corretti, mi è piaciuta l'eleganza di Today.AddHours (16) –

4

ne dite:

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

che deve utilizzare l'anno, il mese , giorno di oggi, e impostare l'ora alle 16:00.

+1

mi ha battuto di 15 s. +1 –