2012-07-20 26 views
15

'dan önce string için TimeSpan nasıl biçimlendirilir .NET 3.5 kullanarak C# derleme yapıyorum ve bir TimeSpan'ı bir dizeye dönüştürmeye ve dizeyi biçimlendirmeye çalışıyorum. Ben TimeSpan.ToString yöntem .NET 4.0 kadar bağımsız değişken olarak bir biçim dizesi almaz ve .NET 3.5 kullanıyorum ancak.NET 4.0

myString = myTimeSpan.ToString("c");

kullanmak istiyorum.

Ne zaman bir TimeSpan'ı bir dize olarak biçimlendirirsiniz? Son hedefim TimeSpan'ı hh:mm:ss biçiminde görüntülemek ancak şu anda hh:mm:ss:fffffff almak.

Bir TimeSpan biçimlendirmek çalışırken çalışmaz farklı biçim dizeleri

myString = string.Format("{0:hh:mm:ss}", myTimeSpan);

kullanarak ancak string.Format sadece benim DateTime biçimlendirme ve geçen çalıştılar.

+4

@John: Bu bir çözüm değil. –

+0

Bu bağlantı size yardımcı olabilir: http://stackoverflow.com/questions/840120/times-formatting –

+1

http://stackoverflow.com/a/574894/1028323 Sorunuzu cevaplar. – Alex

cevap

18

bir yolu olabilir:

TimeSpan ts = DateTime.Now - DateTime.Now.AddHours(-10); 
Console.WriteLine(string.Format("{0:00}:{1:00}:{2:00}", ts.TotalHours, ts.Minutes, ts.Seconds)); 

Sonucu olurdu gibi bir şey:

09:59:59 

DÜZENLEME:

Yoksa deneyebilirsiniz:

TimeSpan ts = DateTime.Now - DateTime.Now.AddHours(-10); 
DateTime mydate = new DateTime(ts.Ticks); 
Console.WriteLine(mydate.ToString(("hh:mm:ss"))); 

Çıktı olurdu :

09:59:59 
+2

Muhtemelen '' {0}: {1:00}: {2:00} '' ... – Joey

+0

@Joey, mükemmel, cevabımı değiştirdim – Habib

0

24 * ts.Days + ts.Hours ts.TotalHours. Karşılaştırın:

var ts = TimeSpan.FromHours(23.9); 
Console.WriteLine(ts); 
Console.WriteLine("{0:00}:{1:00}:{2:00}", ts.TotalHours, ts.Minutes, ts.Seconds); 
Console.WriteLine("{0}:{1:00}:{2:00}", ts.TotalHours, ts.Minutes, ts.Seconds); 
Console.WriteLine("{0}:{1:00}:{2:00}", 24*ts.Days+ts.Hours, ts.Minutes, ts.Seconds);