2013-04-15 16 views
7

Sto cercando di ottenere solo il tempo di un oggetto DateTime.Ottenere solo il tempo di un oggetto datetime

Diciamo che ho questo oggetto:

Nullable<DateTime> data = new DateTime(2007,6,15,5 ,23,45); 

Ho provato utilizzando:

data.Value.ToShortTimeString() 

E ricevo:

5:23 AM 

mi piacerebbe essere in grado di visualizzare solo 5:23

Come posso farlo?

risposta

15

È possibile utilizzare il metodo ToString con l'appropriato formatting string:

var time = date.ToString("H:mm"); 
+0

+1 per la risposta più veloce a destra. –

+0

restituisce un errore come "Nessun metodo di overload per ToString accetta 1 argomento" –

4

È possibile utilizzare il formato personalizzato "H" identificatore.

Il "H" formato personalizzato specificatore rappresenta l'ora come un numero da 0 a 23 ; ovvero, l'ora è rappresentata da un orologio a 24 ore basato su zero che conta le ore da mezzanotte. Un'ora a una cifra è formattata senza uno zero iniziale.

Nullable<DateTime> data = new DateTime(2007, 6, 15, 5, 23, 45); 
Console.WriteLine(data.Value.ToString("H:mm")); 

uscita sarà;

5:23 

Questo è un DEMO.

Per ulteriori informazioni, visitate Custom Date and Time Format Strings

+0

Dovrebbe essere "HH" per ore su un orologio di 24 ore (che sarebbe ragionevole senza l'identificatore AM/PM. –

+0

@GrantThomas Ups! Grazie. Fisso. –

+1

Solo altra cosa (anche questa mi mancava all'inizio), 'H' si addiceva alle OP in modo più appropriato in quanto sembra che non vogliano un" 0 "iniziale per le ore a una cifra. –

3
 Nullable<DateTime> data = new DateTime(2007, 6, 15, 5, 23, 45); 
     var timeofDay = data.Value.TimeOfDay; // 05:23:45 
+0

Per le mie informazioni. È stato il botoz del voto negativo della parte 'ss'? –

3

Se avete bisogno di ottenere un tipo di TimeSpan, utilizzare la proprietà della classe DateTime chiamato TimeOfDay. Restituisce solo la parte "tempo".

Se è necessario ottenere una stringa in tale formato, utilizzare TimeOfDay è eccessivo e utilizzare semplicemente ToString("hh:mm") per formattare l'output. Se non vuoi risultati come 05:40, usa ToString("H:mm").

0

strano, funziona bene per me, maby è un ambiente nello studio visivo?

Si può provare questo

Nullable<DateTime> data = new DateTime(2007, 6, 15, 5, 23, 45); 
Debug.Write(data.Value.Hour + ":" + data.Value.Minute); 
Problemi correlati