2010-01-12 4 views

Répondre

5

Si une chaîne au format "33 hr 40 mins 40 secs" vous est attribuée, vous devez d'abord analyser la chaîne.

var s = "33 hr 40 mins 40 secs"; 
var matches = Regex.Matches(s, "\d+"); 
var hr = Convert.ToInt32(matches[0]); 
var min = Convert.ToInt32(matches[1]); 
var sec = Convert.ToInt32(matches[2]); 
var totalSec = hr * 3600 + min * 60 + sec; 

Ce code, évidemment, ne comporte aucune vérification d'erreur. Donc, vous voudrez peut-être faire des choses comme faire en sorte que 3 matchs ont été trouvés, que les matchs sont des valeurs valides pour les minutes et les secondes, etc.

14
new TimeSpan(33, 40, 40).TotalSeconds; 
2

heures séparées, minute et seconde, puis utilisez

Edité

TimeSpan ts = new TimeSpan(33,40,40); 

/* Gets the value of the current TimeSpan structure expressed in whole 
    and fractional seconds. */ 
double totalSeconds = ts.TotalSeconds; 

Re ad TimeSpan.TotalSeconds Property

+0

cela ne fonctionnera pas. 'TimeSpan.Parse' ne gère que les heures jusqu'à 23, et lancera une exception OverflowException pour cette –

0

Essayez ceci -

// Calculate seconds in string of format "xx hr yy mins zz secs" 
    public double TotalSecs(string myTime) 
    { 
     // Split the string into an array 
     string[] myTimeArr = myTime.Split(' '); 

     // Calc and return the total seconds 
     return new TimeSpan(Convert.ToInt32(myTimeArr[0]), 
          Convert.ToInt32(myTimeArr[2]), 
          Convert.ToInt32(myTimeArr[4])).TotalSeconds; 

    }