DOBON.NET DOBON.NETプログラミング掲示板過去ログ

TimeSpanでのフォーマット指定方法

環境/言語:[win7 c#]
分類:[.NET]

TimeSpanで時間の取得をしたいと思っています。コードは下記のようになります。

var dtStart = DateTime.Now; //開始時刻取得
//待ち時間処理
var dtEnd = DateTime.Now; //終了時刻取得
var ts = dtEnd - dtStart; //時間差取得

List<string> stringList = new List<string>();
stringList.Add(ts.ToString());

上記のコードは問題なく動きます。ただ、フォーマットを"hh:mm:ss"としたいと思います。
そこで下記サイトを参考にし、コードを直しました。

http://programmers.high-way.info/cs/timespan.html

stringList.Add(ts.ToString("@"hh\:mm\:ss""));

そうすると、エラーが起こり、エラー内容は下記になります。
「引数を 1 個指定できる、メソッド 'ToString' のオーバーロードはありません」

ヘルプを見ると、標準またはカスタムの TimeSpan 書式指定文字列できるとあります。
http://msdn.microsoft.com/ja-jp/library/dd992632(v=vs.110).aspx

どのようにしたら、「hh:mm:ss」のフォーマットにできるでしょうか?
よろしくお願いします。
> ただし、.NET Framework 4 以降に限ります。

開発ターゲットの.NETバージョンはどうなってますか?
■No32269に返信(剛士さんの記事)
> ヘルプを見ると、標準またはカスタムの TimeSpan 書式指定文字列できるとあります。
> http://msdn.microsoft.com/ja-jp/library/dd992632(v=vs.110).aspx
>
このページのその他のバージョンのリストを確認してもらえると分かりますが
ToString()は1.1から4.0までありますが
ToSTring(String)は4.0からしかありません。

なのでFrameworkのバージョンを4.0以降にして下さい。


それ以前でどうしても使いたいのなら、00:00:00のDateTime値に
加算してToStringするというのはどうでしょう?
例 (DateTime.Today + ts).ToString("HH:mm:ss")
shuさん

バージョンが4.0というところを見逃していました。指定していたバージョンは3.5でした。

4.0に変更したら無事にエラーにならずに実行できました。お教え頂いた方法も勉強になります。

今回は、3.5にこだわっているわけではないので、簡単に4.0に変更します。ありがとうございました!!
解決済み!
Hongliang さん

.net3.5でした。4.0に変更したら通りました。ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板