Para .Net <= 4.0 Use a classe 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 observado por Inder Kumar Rathore) Para .NET> 4.0, você pode 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) Verifique se os segundos são menores do que TimeSpan.MaxValue.TotalSeconds
para evitar uma exceção.
using System;
A classe reside emSystem.TimeSpan
.Para .NET> 4.0, você pode usar
ou se você quiser o formato de data e hora, também poderá fazer isso
Para saber mais, você pode verificar as seqüências de caracteres personalizadas do formato TimeSpan
fonte
HH
é inválido lá..NET/C#
.ToString(@"hh\:mm\:ss\:fff");
já está em24hr
formato.HH
não é válido lá com tal entrada ( o erro éInput string was not in a correct format.
)Se você souber que possui um número de segundos, poderá criar um valor TimeSpan chamando TimeSpan.FromSeconds:
Você pode obter o número de dias, horas, minutos ou segundos. Ou use uma das sobrecargas do ToString para produzi-lo da maneira que desejar.
fonte
Fiz alguns benchmarks para ver qual é o caminho mais rápido e esses são meus resultados e conclusões. Executei cada método 10 milhões de vezes e adicionei um comentário com o tempo médio por execução.
Se seus milissegundos de entrada não estiverem limitados a um dia (seu resultado pode ser 143: 59: 59.999), estas são as opções, de mais rápida a mais lenta:
Se seus milissegundos de entrada são limitados a um dia (seu resultado nunca será superior a 23: 59: 59.999), estas são as opções, de mais rápida a mais lenta:
Caso sua entrada seja apenas alguns segundos , os métodos serão um pouco mais rápidos. Novamente, se os segundos de entrada não estiverem limitados a um dia (o resultado pode ser 143: 59: 59):
E se os segundos de entrada forem limitados a um dia (seu resultado nunca será maior que 23:59:59):
Como comentário final, deixe-me acrescentar que notei que
string.Format
é um pouco mais rápido se você usar emD2
vez de00
.fonte
http://msdn.microsoft.com/en-us/library/system.timespan.fromseconds.aspx
fonte
O construtor TimeSpan permite passar em segundos. Simplesmente declare uma variável do tipo TimeSpan por segundos. Ex:
fonte
Eu sugiro que você use a
TimeSpan
classe para isso.Saídas:
fonte
No VB.NET, mas é o mesmo em c #:
fonte
Para .NET <4.0 (ex: Unity ), você pode escrever um método de extensão para ter o
TimeSpan.ToString(string format)
comportamento como .NET> 4.0E de qualquer lugar no seu código, você pode usá-lo como:
Dessa forma, você pode formatar qualquer
TimeSpan
objeto simplesmente chamando ToString de qualquer lugar do seu código.fonte
Por que as pessoas precisam de TimeSpan AND DateTime se temos DateTime.AddSeconds ()?
A data é arbitrária. totalSeconds pode ser maior que 59 e é um dobro. Em seguida, você pode formatar seu horário como quiser usando DateTime.ToString ():
Isso não funciona se totalSeconds <0 ou> 59:
fonte
//Teste
fonte
para obter segundos totais
e para obter data e hora de segundos
fonte
Isso retornará no formato hh: mm: ss
fonte
ConvertTime(80)
retornos0:1:20
eConvertTime(61)
retornos0:1:1
, os quais sãoh:m:s
. O uso da interpolação de string também resulta em um código mais longo do queToString()
, conforme usado em outras respostas, e também dificulta a visualização do comprimento da string formatada.