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
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.
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)))
je ne peux pas que la chaîne garantie sera toujours hhmmss je dois mettre le format dans un fichier .settings –
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;
Vous devez échapper les deux-points (ou d'autres séparateurs), pour quelle raison il ne peut pas les manipuler, je ne sais pas. Voir Custom TimeSpan Format Strings sur MSDN, et la réponse acceptée, de Jon, à Why does TimeSpan.ParseExact not work.
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. . "
J'essaie et ça marche –
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! –