2010-12-03 60 views
1

question que le titre, cela ne fonctionne pas, ne peut pas comprendre pourquoi:Comment calculer le temps restant en hh: mm: ss en connaissant le nombre total de pas, le pas en cours et la durée (millisecondes)?

// Get total steps, current step and duration in milliseconds 
    int current = stats[0]; int total = stats[1]; int duration = stats[2]; 

    // Calculate the time span (of remaining time) 
    var remaining = TimeSpan.FromMilliseconds((total - current) * duration); 

    // Update the label 
    label.Text = string.Format("Tempo rimanente: {0}", 
    (new DateTime(remaining.Ticks)).ToString("hh:mm:ss")); 
+0

_What_ ne fonctionne pas? Qu'est-ce que vous attendez de ceci et qu'est-ce que cela produit en réalité? Quelle est la variable 'stats' et que contient-elle? – Oded

Répondre

1

Essayez de changer

(new DateTime(remaining.Ticks)).ToString("hh:mm:ss")); 

Pour

remaining.Hours + ":" + remaining.Minutes + ":" + remaining.Seconds); 

OU même:

// Update the label 
label.Text = string.Format("Tempo rimanente: {0:00}:{1:00}:{2:00}", 
    remaining.Hours, remaining.Minutes, remaining.Seconds) 
+0

Le seul problème est, lorsque la valeur des heures, minutes ou secondes est inférieure à 10, la sortie est (par exemple) 0: 9: 7, tout à fait illisible ... – gremo

+0

@Gremo: Voir mon édition ci-dessus –

+0

juste parfait, merci. Même si je ne peux pas comprendre le formatage {0:00}: {1:00}: {2:00}. Ce que cela veut dire? – gremo

1

Pourquoi essayez-vous de convertir un TimeSpan à un DateTime du tout? "Temps restant" est un concept qui est idéalement adapté à un TimeSpan, pas un DateTime. Vous voudrez peut-être le convertir en "temps d'achèvement estimé" qui serait un DateTime, mais sinon utilisez simplement le TimeSpan.

Notez que dans .NET 4, TimeSpan a gagné custom format abilities, si vous en avez vraiment besoin - mais je suppose que le format par défaut est susceptible d'être correct pour vous, au moins pour commencer.

+0

J'en ai besoin pour convertir l'intervalle de temps en format hh: mm: ss. Le calcul est-il correct? Parce que le temps restant affiché est faux ... – gremo

+0

@Gremo: Ça sonne bien ... si vous pouviez donner un exemple, cela aiderait. –

+0

merci de répondre, pas besoin d'utiliser DateTime. – gremo