2009-12-02 8 views
12

en C# tengo tiempo en formato hhmmss como 124510 para 12:45:10 y necesito saber el TotalSeconds. utilicé el TimeSpan.Parse ("12:45:10"). ToTalSeconds pero no toma el formato hhmmss. ¿Alguna buena forma de convertir esto?TimeSpan.For formato de hora hhmmss

Respuesta

20

esto podría ayudar

using System; 
using System.Globalization; 

namespace ConsoleApplication7 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DateTime d = DateTime.ParseExact("124510", "hhmmss", CultureInfo.InvariantCulture); 

      Console.WriteLine("Total Seconds: " + d.TimeOfDay.TotalSeconds); 

      Console.ReadLine(); 
     } 
    } 
} 

Nota esto no va a manejar 24HR veces, a en el formato 24HR, debe usar el patrón HHmmss.

+0

lo intento y funciona –

+2

Ese comentario de 24HR Time probablemente me haya salvado de un error día de golpear mi cabeza contra una pared. ¡Gracias! –

0

Si usted puede garantizar que la cadena siempre será hhmmss, usted podría hacer algo como:

TimeSpan.Parse(
    timeString.SubString(0, 2) + ":" + 
    timeString.Substring(2, 2) + ":" + 
    timeString.Substring(4, 2))) 
+0

I Cant garantiza que la cadena siempre será hhmmss tengo que poner el formato de un archivo .settings –

8

analizar la cadena en un valor DateTime, luego restar su valor Date para obtener el tiempo como un intervalo de tiempo:

DateTime t = DateTime.ParseExact("124510", "HHmmss", CultureInfo.InvariantCulture); 
TimeSpan time = t - t.Date; 
+4

DateTime.TimeOfDay le da un intervalo de tiempo directamente de – AakashM

+7

Debe utilizar TimeOfDay en lugar de t -. T.Date –

+0

Wow, gracias He estado usando el método anterior en todo mi código, e incluso tuve un método de extensión 'ToTime' en un momento. Facepalm! – ProfK

4

Tiene que decidir el formato de tiempo de recepción y convertirlo a cualquier formato coherente.

A continuación, puede utilizar siguiente código:

Formato: hh: mm: ss (12 Horas Formato)

DateTime dt = DateTime.ParseExact("10:45:10", "hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture); 
double totalSeconds = dt.TimeOfDay.TotalSeconds; // Output: 38170.0 

Formato: hh: mm: ss (formato de 24 horas)

DateTime dt = DateTime.ParseExact("22:45:10", "HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); 
double totalSeconds = dt.TimeOfDay.TotalSeconds; // Output: 81910.0 

En caso de falta de coincidencia de formato, FormatException será lanzado con el mensaje: "String no fue reconocido como un DateTime válido. . "

Cuestiones relacionadas