2009-06-22 17 views

Respuesta

50

Desde un DateTime, puede usar .TimeOfDay - pero eso le da un TimeSpan que representa el tiempo en el día (10 horas).

+0

o casos especiales con Formateo en ToString ("códigos de formato") – kenny

16

Es posible que desee examinar el método DateTime.ToShortTimeString().

Además, hay muchos otros métodos y propiedades en el objeto DateTime que pueden ayudarle a formatear la fecha u hora de la manera que desee. Solo eche un vistazo a la documentación.

+0

+1 Esta es la solución más limpia, si se está ejecutando en un entorno internacional con el requisito de localización de la salida de tiempo, ya que devuelve el tiempo en cualquier formato actual sistema se ha configurado en. – aggaton

1

Si usted está buscando para comparar los tiempos, y no la fecha, sólo podría tener una fecha de comparación estándar, o el partido de la fecha que está utilizando, como en ...

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

Hay puede ser una mejor forma de hacerlo, pero mantiene sus fechas coincidentes.

143

Usted tiene muchas opciones para esto:

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 

Espero que ayude!

:)

Enlace útil: DateTime.ToString() Patterns

+8

@MetroSmurf - el OP es, por supuesto, no está claro lo que quiere hacer. Una de mis mascotas odia ir a las cuerdas temprano. Tuve un colega que convirtió todo en cuerda, incluso dobla, etc. Es un accidente que está por ocurrir. Yo diría que no conviertas objetos en cadenas hasta que quieras mostrar el objeto a un humano. Hasta entonces, quédate con los objetos. – paul

5

Hay diferentes maneras de hacerlo. Puede usar DateTime.Now.ToLongTimeString(), que devuelve solo la hora en formato de cadena.

+0

Probablemente quiso decir 'DateTime.ToLongTimeString()' en lugar de 'DateTime.Now.ToLongTimeString()'. Dada la edad de este hilo, lo mejor es no resucitarlo a menos que la respuesta contribuya con una mejora significativa sobre las respuestas anteriores. – Leigh

4

Esto funciona para mí. Lo descubrí cuando tuve que trabajar con DateTime.Date para obtener solo la parte de la fecha.

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

Puede utilizar ToString("T") por mucho tiempo o ToString("t") por corto tiempo.

34

Solo hay fecha y hora en C# y consta de la parte de fecha y hora. Si no se preocupan por la parte Fecha de Fecha y hora, ajuste al valor por defecto de esta manera:

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

De esta manera puede ser consistente a través de todas las versiones de .NET, incluso si Microsoft decide cambiar la fecha de base a algo más que 1/1/0001.

+10

Esta debería ser la respuesta aceptada. La pregunta era extraer tiempo de DateTime, no formatearlo como una cadena. – ASalazar

4

Simplemente puede escribir

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

¡esto no agrega absolutamente nada a lo que ya se envió hace más de 4 años! – paul

4

Puede utilizar siguiente código:

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

¡esto no agrega absolutamente nada a lo que ya se presentó hace más de 4 años! – paul

6

Prueba esto:

TimeSpan TodayTime = DateTime.Now.TimeOfDay; 
1

si está utilizando gridview a continuación, puede mostrar sólo la hora con DataFormatString="{0:t}" ejemplo:

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

Puede utilizar esta

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

Es en tiempo real con el valor de milisegundos y se establece que sólo el tiempo.

Cuestiones relacionadas