2009-12-02 11 views
12

C# içinde 12:45:10 için 124510 gibi hhmmss biçiminde zamanım var ve TotalSeconds'ı bilmem gerekiyor. TimeSpan.Parse ("12:45:10") kullandım.TimeSeconds ancak hhmmss biçimini almaz. Bunu dönüştürmenin iyi bir yolu var mı?TimeSpan.Parse zaman biçimi hhmmss

cevap

20

Bu kadar bu 24SA kez işlemez olur

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

not yardımcı olabilecek 24HR formatında ayrıştırma zamanları HHmmss modelini kullanmalısınız.

+0

çalışıyorum ve –

+2

çalışır Bu 24HR Zaman yorum muhtemelen sadece beni hakkında bir kafamı duvara vurma günü. –

0

sen dize her zaman SSDDSS olacağını garanti edebilir varsa, böyle bir şey yapabileceğini:

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

i dize her zaman ssddss olacağını garanti ediyoruz edemem ben –

8

sonra, bir DateTime değeri dizgesini çözümler bir TimeSpan olarak saati almak için Tarih değer çıkarma:

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

DateTime.TimeOfDay hemencecik size TimeSpan verir dosyası bir .settings biçiminde koymak gerekir – AakashM

+7

yerine t timeofday kullanmalıdır -. T.Date –

+0

Wow, teşekkürler.Tüm kodumu yukarıda kullandığım yöntem, ve tek bir aşamada bir 'ToTime' uzantısı yöntemi vardı. Facepalm! – ProfK

4

Alma zamanı biçimine karar vermeniz ve onu tutarlı bir formata dönüştürmeniz gerekir. ss (24 Saat Biçimi):

Biçim: ss: dd: ss (12 Saat Biçimi)

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

Format: SS: dd

Ardından, aşağıdaki kodu kullanabilirsiniz biçimi uyumsuzluğu durumunda

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

, FormatException mesajla atılacaktır: "Dize geçerli bir DateTime olarak tanınmadı. . "