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?

Foi útil?

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)))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top