2009-03-25 63 views

Respuesta

59

Parece un intervalo de tiempo. Tan simple analizar el texto y obtener los segundos.

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

¿Por qué se ¿almacenar segundos en un doble? – Alan

+0

La propiedad TotalSeconds of TimeSpan es doble; no sé por qué ... –

+0

Porque es compatible con segundos fraccionarios. Interesante. Gracias. – Alan

10

TimeSpan.Parse() analizará una cadena formateada.

Así

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

¿Por qué no está almacenando el valor de TotalSeconds en un doble? * sonrisa * –

+0

El mundo nunca puede saber;) – Alan

18

Usted puede utilizar el método de análisis de aTimeSpan.

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

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

La propiedad totalseconds devuelve los segundos en total si lo que desea el segundo a continuación, utilizar la propiedad segundo

int seconds = ts.Seconds; 

segundos retorno '30'. TotalSeconds return 10 * 3600 + 20 * 60 + 30

+1

Muy detallada respuesta! ¡Buen estilo! Gracias. –

+0

estuvo de acuerdo, dejó la bandera de respuesta con mich ya que respondió primero – Andrew

1

Este código permite que los componentes de horas y minutos sean opcionales. Por ejemplo,

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

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; 
Cuestiones relacionadas