16

.NET 3.5 を使用して C# でコンパイルしており、TimeSpan を文字列に変換して文字列をフォーマットしようとしています。使いたい

myString = myTimeSpan.ToString("c");

ただし、このTimeSpan.ToStringメソッドは、.NET 4.0 までフォーマット文字列を引数として取りません。私は .NET 3.5 を使用しています。

では、TimeSpan を文字列としてどのようにフォーマットしますか? 私の最終的な目標は、TimeSpan を形式で表示することですhh:mm:ssが、現在受け取っていhh:mm:ss:fffffffます。

使ってみました

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

ただし、string.Format は DateTime のみをフォーマットしており、TimeSpan をフォーマットしようとすると、異なるフォーマット文字列を渡すことはできません。

4

2 に答える 2

20

1つの方法は次のとおりです。

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

結果は次のようになります。

09:59:59

編集:

または、次を試すことができます。

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

出力は次のようになります。

09:59:59
于 2012-07-20T12:13:25.343 に答える
0

ts.TotalHours よりも 24*ts.Days+ts.Hours の方が優れています。比較:

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 );
于 2015-02-13T11:07:45.740 に答える