TimeSpan.Parse формат времени ччммсс - PullRequest
13 голосов
/ 02 декабря 2009

в c # у меня есть время в формате hhmmss как 124510 для 12:45:10, и мне нужно знать общее количество секунд. я использовал TimeSpan.Parse ("12:45:10"). ToTalSeconds, но он не принимает формат hhmmss. Любой хороший способ преобразовать это?

Ответы [ 5 ]

24 голосов
/ 02 декабря 2009

Это может помочь

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

Обратите внимание, что это не будет обрабатывать 24 часа, для анализа времени в формате 24 часа вы должны использовать шаблон ЧЧммсс .

9 голосов
/ 02 декабря 2009

Анализ строки в значении DateTime, затем вычитание ее значения Date для получения времени в качестве TimeSpan:

DateTime t = DateTime.ParseExact("124510", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;
4 голосов
/ 18 декабря 2014

Вы должны выбрать формат времени приема и преобразовать его в любой согласованный формат.

Затем вы можете использовать следующий код:

Формат: чч: мм: сс (12-часовой формат)

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

Формат: ЧЧ: мм: сс (24-часовой формат)

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

В случае несоответствия формата будет выдано исключение FormatException с сообщением: « Строка не была распознана как допустимый DateTime. "

3 голосов
/ 28 апреля 2013

Вам нужно избегать двоеточий (или других разделителей), по какой причине он не может с ними справиться, я не знаю. См. Пользовательские строки формата TimeSpan на MSDN и принятый ответ от Джона на Почему TimeSpan.ParseExact не работает .

0 голосов
/ 02 декабря 2009

Если вы можете гарантировать, что строка всегда будет hhmmss, вы можете сделать что-то вроде:

TimeSpan.Parse(
    timeString.SubString(0, 2) + ":" + 
    timeString.Substring(2, 2) + ":" + 
    timeString.Substring(4, 2)))
...