Question

c # j'ai le temps au format hhmmss comme pour 124510 12:45:10 et j'ai besoin de connaître les TotalSeconds les. i utilisé le TimeSpan.Parse ( "12:45:10"). ToTalSeconds mais il does'nt prendre le format hhmmss. De toute façon agréable de convertir cela?

Était-ce utile?

La solution

Cela pourrait aider

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();
        }
    }
}

Notez que ce ne traitera pas 24HR fois, pour analyser les temps au format 24HR, vous devez utiliser le modèle HHmmss .

Autres conseils

la chaîne à Parse une valeur DateTime, puis soustrayez sa valeur Date pour obtenir le temps comme TimeSpan:

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

Vous devez décider du format de l'heure de réception et le convertir en un format compatible.

Ensuite, vous pouvez utiliser le code suivant:

Format: hh: mm: ss (12 Heures Format)

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

Format: HH: mm: ss (24 Heures Format)

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

En cas de non-concordance de format, FormatException sera lancé avec le message: " Chaîne n'a pas été reconnu comme un DateTime valide "

Vous devez échapper aux virgules (ou d'autres séparateurs), pour quelle raison il ne peut pas les gérer, je ne sais pas. Voir personnalisés TimeSpan Chaînes de format sur MSDN, et la réponse acceptée, de Jon, Pourquoi ne TimeSpan.ParseExact fonctionne pas .

Si vous ne pouvez garantir que la chaîne sera toujours hhmmss, vous pouvez faire quelque chose comme:

TimeSpan.Parse(
    timeString.SubString(0, 2) + ":" + 
    timeString.Substring(2, 2) + ":" + 
    timeString.Substring(4, 2)))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top