Para .Net <= 4.0 Use la clase TimeSpan.
TimeSpan t = TimeSpan.FromSeconds( secs );
string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
t.Hours,
t.Minutes,
t.Seconds,
t.Milliseconds);
(Como señaló Inder Kumar Rathore) Para .NET> 4.0 puede usar
TimeSpan time = TimeSpan.FromSeconds(seconds);
//here backslash is must to tell that colon is
//not the part of format, it just a character that we want in output
string str = time .ToString(@"hh\:mm\:ss\:fff");
(De Nick Molyneux) Asegúrese de que los segundos sean menores que TimeSpan.MaxValue.TotalSeconds
para evitar una excepción.
using System;
La clase reside enSystem.TimeSpan
.Para .NET> 4.0 puede usar
o si desea el formato de fecha y hora, también puede hacerlo
Para obtener más información, puede consultar cadenas de formato TimeSpan personalizadas
fuente
HH
no es válida allí..NET/C#
.ToString(@"hh\:mm\:ss\:fff");
ya está en24hr
formato.HH
no es válido allí con dicha entrada ( el error esInput string was not in a correct format.
)Si sabe que tiene varios segundos, puede crear un valor de TimeSpan llamando a TimeSpan.FromSeconds:
Luego puede obtener el número de días, horas, minutos o segundos. O utilice una de las sobrecargas de ToString para generarla de la manera que desee.
fuente
Hice algunos puntos de referencia para ver cuál es la forma más rápida y estos son mis resultados y conclusiones. Ejecuté cada método 10M veces y agregué un comentario con el tiempo promedio por ejecución.
Si sus milisegundos de entrada no se limitan a un día (su resultado puede ser 143: 59: 59.999), estas son las opciones, de más rápido a más lento:
Si sus milisegundos de entrada están limitados a un día (su resultado nunca será mayor que 23: 59: 59.999), estas son las opciones, de más rápido a más lento:
En caso de que su entrada sea de solo segundos , los métodos son un poco más rápidos. Nuevamente, si sus segundos de entrada no se limitan a un día (su resultado puede ser 143: 59: 59):
Y si sus segundos de entrada están limitados a un día (su resultado nunca será mayor que 23:59:59):
Como comentario final, permítanme agregar que noté que
string.Format
es un poco más rápido si lo usa enD2
lugar de00
.fuente
http://msdn.microsoft.com/en-us/library/system.timespan.fromseconds.aspx
fuente
El constructor TimeSpan le permite pasar en segundos. Simplemente declare una variable de tipo TimeSpan cantidad de segundos. Ex:
fuente
Te sugiero que uses la
TimeSpan
clase para esto.Salidas:
fuente
En VB.NET, pero es lo mismo en C #:
fuente
Para .NET <4.0 (ej .: Unity ) puede escribir un método de extensión para tener el
TimeSpan.ToString(string format)
comportamiento como .NET> 4.0Y desde cualquier parte de su código puede usarlo como:
De esta manera, puede formatear cualquier
TimeSpan
objeto simplemente llamando a ToString desde cualquier parte de su código.fuente
¿Por qué las personas necesitan TimeSpan AND DateTime si tenemos DateTime.AddSeconds ()?
La fecha es arbitraria. totalSeconds puede ser mayor que 59 y es un doble. Luego puede formatear su tiempo como lo desee usando DateTime.ToString ():
Esto no funciona si totalSeconds <0 o> 59:
fuente
//Prueba
fuente
para obtener el total de segundos
y para obtener la fecha y hora de segundos
fuente
Esto volverá en formato hh: mm: ss
fuente
ConvertTime(80)
vuelve0:1:20
yConvertTime(61)
vuelve0:1:1
, los cuales sonh:m:s
. El uso de la interpolación de cadenas también genera un código más largo queToString()
, como se usa en otras respuestas, y también dificulta la visualización de la longitud de la cadena formateada.