2010-03-05 10 views
9

J'ai essayé la recherche here, mais il ne pouvait pas me aider beaucoup ..
Je veux convertir time_span à chaîne, je ne veux pas retourner le jour .. en timespan mais seulement HH: mm: ss. Comment y parvenir?comment atteindre le délai de conversion de chaîne?

Mon exemple de code est ici:

   String time_span_par = "06:12:40"; 
       String time_str = "18:13:59"; 
       TimeSpan time_span_var = TimeSpan.Parse(time_span_par); 
       TimeSpan time_span = TimeSpan.Parse(time_str); 

       time_span = time_span.Add(time_span_var); 
       string temp = time_span.ToString("HH:mm:ss"); 
+0

Est-ce que cela veut dire que vous voulez ajouter 18 heures à 6 heures? Ce ne serait pas un autre jour alors? – shahkalpesh

+0

Ya mais je ne veux pas le jour .. 0 heures est suffisant pour être affiché .. –

Répondre

17

Essayez d'utiliser

DateTime d = new DateTime(time_span.Ticks); 
string time = d.ToString("HH:mm:ss"); 
+0

bonjour @astander, Votre réponse est acceptable aussi .. Mais personnellement, j'ai aimé le code un-liner .. –

+5

@infant programmeur, celui-ci peut être un doublure aussi, vous pouvez combiner les deux expressions dans une ligne: 'string time = new DateTime (time_span.Ticks) .ToString (" HH: mm: ss ");' – CMS

+0

@cms, ok .. alors accepté . J'évitais juste de déclarer une autre variable. –

6

Cela devrait fonctionner:

string temp = string.Format("{0}:{1}:{2}", 
    time_span.Hours.ToString(), time_span.Minutes.ToString(), 
    time_span.Seconds.ToString()); 

Comme par commentaire si vous voulez que les deux chiffres que vous pourriez faire:

string temp = string.Format("{0}:{1}:{2}", 
    time_span.Hours.ToString("00"), time_span.Minutes.ToString("00"), 
    time_span.Seconds.ToString("00")); 

Modifié: selon le commentaire de jimmy,

string temp = string.Format("{0:00}:{1:00}:{2:00}",time_span.Hours, time_span.Minutes, time_span.Seconds); 
+2

Cela ne vous donnera-t-il pas des choses comme "1: 2: 6" pour <10 portions? –

+1

Oui, il va :) Ajouté le formatage pour les chiffres à deux chiffres. – Kelsey

+2

chaîne.Format ("{0:00}: {1:00}: {2:00}", time_span.Hours, time_span.Minutes, time_span.Seconds); – Jimmy

1

convertir simplement la valeur des tiques dans un DateTime puis utiliser son ToString()

var date1 = DateTime.Now; 
var date2 = DateTime.Now.AddSeconds(-1000); 
var diff = date1 - date2; 
var temp = new DateTime(diff.Ticks).ToString("HH:mm:ss") 
+0

+1, merci pour la réponse, –

3

Essayez ceci:

time_span = time_span.Add(time_span_var); 
    string temp = time_span.ToString(); 
    temp = string.Format("{0}:{1}:{2}", time_span.TotalHours, time_span.TotalMinutes, time_span.TotalSeconds); 

E dit Après avoir lu votre commentaire sur votre question, c'est que vous devez afficher zéro heure pour les nouveaux jours, ma réponse vous donnera le total des heures, minutes et secondes, et non ce que vous voulez.

(+1) Kelseys;)

+1

Vous ne pouvez pas utiliser 'TotalHours',' TotalMinutes', etc. car ils sont calculés indépendamment tout englobant de la valeur. Aussi juste en train de faire un ToString() sur les sorties du Timespan: '1.00: 26: 3' où ma version produit:' 00: 26: 39'. – Kelsey

+0

Merci Kelsey;) Votre réponse est vraiment le meilleur pour sa question. J'ai édité ma réponse ci-dessus avant que ma page ne soit mise à jour avec votre commentaire. En tout cas, merci. –

1
String time_span_par = "06:12:40"; 
String time_str = "18:13:59"; 
TimeSpan time_span_var = TimeSpan.Parse(time_span_par); 
TimeSpan time_span = TimeSpan.Parse(time_str); 

TimeSpan finalTime = (time_span_var + time_span); 
Console.WriteLine(finalTime); 
Console.WriteLine(finalTime - TimeSpan.FromHours(finalTime.Days * 24)); 
+0

Impressionnant .. :-) +1 –

3

Le code que je l'ai mis en œuvre est:

  string temp = DateTime.Today.Add(time_span).ToString("HH:mm:ss"); 

Posté par Marc Gravell,

+0

Pourquoi avez-vous implémenté une réponse et accepté une réponse différente? – Jimmy

+0

Ce n'est pas ma propre réponse .. donc je ne veux pas prendre le crédit, Et aussi je voudrais valoriser les autres en aidant l'attitude et l'effort fait .. :-) –

+0

Et aussi la solution acceptée vaut la mise en œuvre .. –

0

Si le nombre de jours est hors de propos vous J'ai la solution, mais je suis tombé sur cette réponse à la recherche d'une conversion qui a donné des heures au total, donc 36 heures devraient être affichées comme 36:00:00. En utilisant certains des conseils ci-dessus ce que je suis venu avec:

SomeLabel.Text = Math.Floor(ts.TotalHours).ToString() + ":" + ts.Minutes.ToString("D2") + ":" + ts.Seconds.ToString("D2"); 

Heures totales est toujours arrondi vers le bas, les minutes et les secondes sont rembourrées pour 2 chiffres (00 - 09)

3

Il y a beaucoup Pour le faire de la manière la plus simple maintenant (mais seulement en utilisant framework 4), il suffit d'utiliser la chaîne littéralement, et vous pouvez le faire directement sur l'instance de TimeSpan.

time_span.ToString(@"hh\:mm\:ss") 

qui sortie

00:26:39 

maintenant utile pour les personnes tomber sur ce (comme moi).Cheers :)