2009-03-25 5 views

Répondre

59

Cela ressemble à une durée. Tellement simple analyser le texte et obtenir les secondes.

string time = "00:01:05"; 
double seconds = TimeSpan.Parse(time).TotalSeconds; 
+0

Pourquoi vous stocker des secondes dans un double? – Alan

+0

La propriété TotalSeconds de TimeSpan est double - je ne sais pas pourquoi ... –

+0

Parce qu'il supporte les fractions de secondes. Intéressant. THX. – Alan

10

TimeSpan.Parse() analysera une chaîne formatée.

Alors

TimeSpan.Parse("03:33:12").TotalSeconds; 
+0

Pourquoi ne stockez-vous pas la valeur de TotalSeconds dans un double? * sourire * –

+0

Le monde ne sait peut-être jamais;) – Alan

18

Vous pouvez utiliser la méthode d'analyse sur aTimeSpan.

http://msdn.microsoft.com/en-us/library/system.timespan.parse.aspx

TimeSpan ts = TimeSpan.Parse("10:20:30"); 
double totalSeconds = ts.TotalSeconds; 

La propriété TotalSeconds renvoie les secondes au total si vous voulez juste les secondes puis utilisez les secondes propriété

int seconds = ts.Seconds; 
retour

Seconds '30'. Retour TotalSeconds 10 * 3600 + 20 * 60 + 30

+1

Réponse très détaillée! Bon style! Merci. –

+0

d'accord, à gauche réponse drapeau avec mich comme il a répondu d'abord si – Andrew

1

Ce code permet aux composants des heures et des minutes d'être facultatifs. Par exemple,

"30" -> 24 secondes
"1:30" -> 90 secondes
"1: 1: 30" -> 3690 secondes

int[] ssmmhh = {0,0,0}; 
var hhmmss = time.Split(':'); 
var reversed = hhmmss.Reverse(); 
int i = 0; 
reversed.ToList().ForEach(x=> ssmmhh[i++] = int.Parse(x));       
var seconds = (int)(new TimeSpan(ssmmhh[2], ssmmhh[1], ssmmhh[0])).TotalSeconds; 
1
//Added code to handle invalid strings 
string time = null; //"";//"1:31:00"; 
string rv = "0"; 
TimeSpan result; 
if(TimeSpan.TryParse(time, out result)) 
{ 
    rv = result.TotalSeconds.ToString(); 
} 
retrun rv; 
Questions connexes