Pour .Net <= 4.0 Utilisez la 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);
(Comme indiqué par Inder Kumar Rathore) Pour .NET> 4.0, vous pouvez utiliser
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) Assurez-vous que les secondes sont inférieures à TimeSpan.MaxValue.TotalSeconds
pour éviter une exception.
using System;
La classe réside dansSystem.TimeSpan
.Pour .NET> 4.0, vous pouvez utiliser
ou si vous voulez le format date-heure, vous pouvez également le faire
Pour plus d'informations, vous pouvez vérifier les chaînes de format TimeSpan personnalisées
la source
HH
n'est pas valide là-bas..NET/C#
.ToString(@"hh\:mm\:ss\:fff");
est déjà au24hr
format.HH
n'est pas valide là-bas avec une telle entrée ( l'erreur estInput string was not in a correct format.
)Si vous savez que vous disposez d'un certain nombre de secondes, vous pouvez créer une valeur TimeSpan en appelant TimeSpan.FromSeconds:
Vous pouvez alors obtenir le nombre de jours, heures, minutes ou secondes. Ou utilisez l'une des surcharges ToString pour la sortir de la manière que vous souhaitez.
la source
J'ai fait quelques repères pour voir quel est le moyen le plus rapide et ce sont mes résultats et mes conclusions. J'ai exécuté chaque méthode 10 millions de fois et ajouté un commentaire avec le temps moyen par exécution.
Si vos millisecondes d'entrée ne sont pas limitées à un jour (votre résultat peut être 143: 59: 59.999), ce sont les options, de la plus rapide à la plus lente:
Si vos millisecondes d'entrée sont limitées à un jour (votre résultat ne sera jamais supérieur à 23: 59: 59.999), ce sont les options, de la plus rapide à la plus lente:
Si votre saisie ne dure que quelques secondes , les méthodes sont légèrement plus rapides. Encore une fois, si vos secondes d'entrée ne sont pas limitées à un jour (votre résultat peut être 143: 59: 59):
Et si vos secondes d'entrée sont limitées à un jour (votre résultat ne sera jamais supérieur à 23:59:59):
Pour terminer, permettez-moi d'ajouter que j'ai remarqué que
string.Format
c'est un peu plus rapide si vous utilisez à laD2
place de00
.la source
http://msdn.microsoft.com/en-us/library/system.timespan.fromseconds.aspx
la source
Le constructeur TimeSpan vous permet de passer en quelques secondes. Déclarez simplement une variable de type TimeSpan quantité de secondes. Ex:
la source
Je vous suggère d'utiliser la
TimeSpan
classe pour cela.Les sorties:
la source
Dans VB.NET, mais c'est la même chose en C #:
la source
Pour .NET <4.0 (ex: Unity ), vous pouvez écrire une méthode d'extension pour avoir le
TimeSpan.ToString(string format)
comportement comme .NET> 4.0Et de n'importe où dans votre code, vous pouvez l'utiliser comme:
De cette façon, vous pouvez formater n'importe quel
TimeSpan
objet en appelant simplement ToString à partir de n'importe où dans votre code.la source
Pourquoi les gens ont-ils besoin de TimeSpan ET DateTime si nous avons DateTime.AddSeconds ()?
La date est arbitraire. totalSeconds peut être supérieur à 59 et c'est un double. Ensuite, vous pouvez formater votre heure comme vous le souhaitez en utilisant DateTime.ToString ():
Cela ne fonctionne pas si totalSeconds <0 ou> 59:
la source
//Tester
la source
pour obtenir un total de secondes
et pour obtenir datetime de quelques secondes
la source
Cela retournera au format hh: mm: ss
la source
ConvertTime(80)
retours0:1:20
etConvertTime(61)
retours0:1:1
, qui sont tous les deuxh:m:s
. L'utilisation de l'interpolation de chaînes entraîne également un code plus long queToString()
celui utilisé dans d'autres réponses et rend également plus difficile la visualisation de la longueur de chaîne formatée.