2009-06-22 13 views

risposta

50

Da un DateTime, è possibile utilizzare .TimeOfDay - ma questo ti dà un TimeSpan che rappresenta l'ora nel giorno (10 ore).

+0

o casi speciali con formattazione su ToString ("codici di formato") – kenny

16

Si potrebbe voler esaminare il metodo DateTime.ToShortTimeString().

Inoltre, ci sono molti altri metodi e proprietà sull'oggetto DateTime che possono aiutarti a formattare la data o l'ora in qualsiasi modo tu voglia. Basta dare un'occhiata alla documentazione.

+0

+1 Questa è la soluzione più pulita, se si esegue in un ambiente internazionale con necessità di localizzazione dell'output di tempo, poiché restituisce l'ora in qualsiasi formato l'attuale il sistema è stato impostato su. – aggaton

1

Se stai cercando di confrontare i tempi, e non le date, si può solo avere una data di confronto normale, o della partita per la data che si sta utilizzando, come in ...

DateTime time = DateTime.Parse("6/22/2009 10:00AM"); 
DateTime compare = DateTime.Parse(time.ToShortDateString() + " 2:00PM"); 
bool greater = (time > compare); 

Ci potrebbero essere modi migliori per farlo, ma mantiene le date corrispondenti.

143

Avete molte opzioni per questo:

DateTime dt = DateTime.Parse("6/22/2009 07:00:00 AM"); 

dt.ToString("HH:mm"); // 07:00 // 24 hour clock // hour is always 2 digits 
dt.ToString("hh:mm tt"); // 07:00 AM // 12 hour clock // hour is always 2 digits 
dt.ToString("H:mm"); // 7:00 // 24 hour clock 
dt.ToString("h:mm tt"); // 7:00 AM // 12 hour clock 

Speranza che aiuta!

:)

Utile Link: DateTime.ToString() Patterns

+8

@MetroSmurf - l'OP non è, ovviamente, chiaro cosa vuole fare. Uno dei miei animali odia è andare presto alle corde. Ho avuto un collega che ha convertito tutto in stringa - anche in doppio, ecc. È un incidente che aspetta di accadere. Direi di non convertire oggetti in stringhe finché non si desidera visualizzare l'oggetto su un essere umano. Fino ad allora attaccare con gli oggetti. – paul

5

Ci sono diversi modi per farlo. È possibile utilizzare DateTime.Now.ToLongTimeString() che restituisce solo l'ora in formato stringa.

+0

Probabilmente intendevi 'DateTime.ToLongTimeString()' piuttosto che 'DateTime.Now.ToLongTimeString()'. Data l'età di questo thread, è meglio non risorgere a meno che la risposta non contribuisca ad un miglioramento significativo rispetto alle risposte precedenti. – Leigh

4

Questo funziona per me. L'ho scoperto quando ho dovuto lavorare con DateTime.Date per ottenere solo la parte della data.

var wholeDate = DateTime.Parse("6/22/2009 10:00:00 AM"); 
var time = wholeDate - wholeDate.Date; 
2

È possibile utilizzare ToString("T") per lungo tempo o ToString("t") per breve tempo.

34

C'è solo il tipo DateTime in C# e consiste sia nella parte data che ora. Se non si preoccupano la parte Data di DateTime, impostarlo valore in questo modo predefinito:

DateTime myTime = default(DateTime).Add(myDateTime.TimeOfDay) 

In questo modo si può essere coerente in tutte le versioni di .NET, anche se Microsoft decide di cambiare la data di base a qualcos'altro che 1/1/0001.

+10

Questa dovrebbe essere la risposta accettata. La domanda era di estrarre il tempo da un DateTime, non di formattarlo come una stringa. – ASalazar

4

Si può semplicemente scrivere

string time = dateTimeObect.ToString("HH:mm"); 
+0

questo non aggiunge assolutamente nulla a ciò che è già stato presentato più di 4 anni fa! – paul

4

È possibile utilizzare seguente codice:

DateTime dt = new DateTime(2009, 6, 22, 10, 0, 0); //Date 6/22/2009 10:00:00 AM 
string time = dt.ToString("hh:mm tt");    //Output: 10:00 AM 
time = dt.ToString("HH:mm tt");      //Output: 10:00 AM 
dt = new DateTime(2009, 6, 22, 22, 0, 0);   //Date 6/22/2009 10:00:00 PM 
time = dt.ToString("hh:mm tt");      //Output: 10:00 PM 
time = dt.ToString("HH:mm tt");      //Output: 22:00 PM 
+1

questo non aggiunge assolutamente nulla a ciò che è già stato presentato più di 4 anni fa! – paul

6

Prova questo:

TimeSpan TodayTime = DateTime.Now.TimeOfDay; 
1

se si utilizza GridView allora si può mostrare solo il tempo con DataFormatString="{0:t}" esempio:

By bind the value:- 
<asp:Label ID="lblreg" runat="server" Text='<%#Eval("Registration_Time ", "{0:t}") %>'></asp:Label> 

By bound filed:- 
<asp:BoundField DataField=" Registration_Time" HeaderText="Brithday" SortExpression=" Registration Time " DataFormatString="{0:t}"/> 
0

È possibile utilizzare questo

lblTime.Text = DateTime.Now.TimeOfDay.ToString(); 

E 'in tempo reale con il valore dei millisecondi e pone a solo il tempo.

Problemi correlati