TimeSpan.Parse hhmmss de formato de hora
Pergunta
em c # Eu tenho vez em hhmmss formato como 124510 para 00:45:10 e eu preciso saber as as TotalSeconds. eu usei o TimeSpan.Parse ( "0:45:10"). ToTalSeconds mas'nt tomar as hhmmss formato. Qualquer maneira agradável para converter isso?
Solução
Isto pode ajudar
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();
}
}
}
Note que este não vai lidar com 24hr vezes, aos tempos de análise em formato 24HR você deve usar o padrão HHmmss .
Outras dicas
analisar a cadeia para um valor DateTime e depois subtrai-lo do valor Data para obter o tempo como um TimeSpan:
DateTime t = DateTime.ParseExact("124510", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;
Você tem que decidir o formato da hora de recepção e convertê-lo para qualquer formato consistente.
Em seguida, você pode usar seguinte código:
Formato: hh: mm: ss (12 Horas Format)
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 (24 horas Format)
DateTime dt = DateTime.ParseExact("22:45:10", "HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
double totalSeconds = dt.TimeOfDay.TotalSeconds; // Output: 81910.0
Em caso de incompatibilidade de formatos, FormatException será lançada com a mensagem: " Cadeia de caracteres não foi reconhecida como DateTime válido "
Você precisa escapar os dois pontos (ou outros separadores), por que razão ele não pode lidar com eles, eu não sei. Consulte personalizado TimeSpan Formato Cordas no MSDN, e a resposta aceita, a partir de Jon, a Por que TimeSpan.ParseExact não funcionar .
Se você pode garantir que a corda sempre será hhmmss, você poderia fazer algo como:
TimeSpan.Parse(
timeString.SubString(0, 2) + ":" +
timeString.Substring(2, 2) + ":" +
timeString.Substring(4, 2)))