2009-12-02 7 views
12

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

ответ

20

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

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ч раз, чтобы время разбора в формате 24HR, вы должны использовать шаблон HHmmss.

+0

Я стараюсь, и он работает –

+2

Тот комментарий 24HR Time, возможно, только что спас меня день ударился головой о стену. –

0

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

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

я не могу, что гарантия строка всегда будет ччммсс мне нужно поставить формат через .settings файл –

8

Разобрать строку в значение DateTime, а затем вычесть это дата значение, чтобы получить время как TimeSpan:

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

DateTime.TimeOfDay дает вам TimeSpan сразу – AakashM

+7

Вы должны использовать TimeOfDay вместо т. - t.Date –

+0

Ничего себе, спасибо. Я использовал этот метод по всему моему коду и даже использовал метод расширения ToTime на одном этапе. Facepalm! – ProfK

4

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

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

Формат: чч: мм: сс (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. . "