2009-12-02 7 views
12

en C# J'ai le temps en format hhmmss comme 124510 pour 12:45:10 et j'ai besoin de connaître le TotalSeconds. J'ai utilisé le TimeSpan.Parse ("12:45:10"). ToTalSeconds mais il ne prend pas le format hhmmss. Toute belle façon de convertir cela?TimeSpan.Parse format d'heure hhmmss

Répondre

20

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

RemarqueCet ne traitera pas 24HR fois, à Analyser les temps au format 24HR, vous devez utiliser le modèle HHmmss.

+0

J'essaie et ça marche –

+2

Ce commentaire de temps de 24HR probablement juste m'a sauvé au sujet d'un jour de frapper ma tête sur un mur Merci! –

0

Si vous 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))) 
+0

je ne peux pas que la chaîne garantie sera toujours hhmmss je dois mettre le format dans un fichier .settings –

8

Parse la chaîne à 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; 
+4

DateTime.TimeOfDay vous donne un TimeSpan d'emblée – AakashM

+7

Vous devez utiliser TimeOfDay au lieu de t -. T.Date –

+0

Wow, merci, j'ai utilisé la méthode ci-dessus partout dans mon code, et j'ai même eu une méthode d'extension 'ToTime' à un moment .. Facepalm! – ProfK

4

Vous devez décider du format de l'heure de réception et le convertir en n'importe quel format cohérent.

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 jeté avec le message: "Chaîne n'a pas été reconnu comme un DateTime valide. . "