DOBON.NETプログラミング道掲示板
(現在 過去ログ1 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■33202 / inTopicNo.1)  ミリ秒から0:00:00か0:00:00.000....の書式にしたい
  
□投稿者/ まなみ 一般人(1回)-(2016/01/03(Sun) 09:20:19)
  • アイコン環境/言語:[C#] 
    分類:[.NET] 

    ストップウォッチのsw.ElapsedMillisecondsをつかって
    処理にかかる推定残り時間を
    0:00:00(時:分:秒) か
    0:00:00.000....(時:分:秒.ミリ秒)
    の形式で表示したいのですが
    以下のようにコーディングした所
    結果がずっと
    0:00:00
    となってしまいます。
    解決方法を教えていただけましたら幸いです。

    Stopwatch sw = new Stopwatch();
    //省略
    //
    //推定終了時間
    label1.Text = new DateTime((long)((float)sw.ElapsedMilliseconds * (count - i - 1) / (i + 1))).ToLongTimeString();
引用返信 削除キー/
■33203 / inTopicNo.2)  Re[1]: ミリ秒から0:00:00か0:00:00.000....の書式にしたい
□投稿者/ Hongliang 大御所(507回)-(2016/01/03(Sun) 11:20:37)
  • アイコンDateTimeは、「時刻」を表すオブジェクトです。long値による表現では、西暦1年1月1日からの、100ナノ秒刻みの経過時間となります。
    ですので、
    > new DateTime((long)((float)sw.ElapsedMilliseconds * (count - i - 1) / (i + 1))).ToLongTimeString();
    これは二重の錯誤があります。
    「時刻」オブジェクトを「時間」オブジェクトとして扱おうとしていること、それと単位を100ナノ秒では無く1ミリ秒で扱っていることです。
    // それと本題とは関係ないけど、(count - i -1) / (i + 1)って式は正しくないような気がします。それぞれの変数の意味が分からないので断言はできませんが。

    「時間」オブジェクトとしては、TimeSpanという型が用意されています。
    静的メソッドとしてFromMillisecondsが用意されているので、これを使ってミリ秒からTimeSpanオブジェクトを構築できます。
    TimeSpanから任意の書式での文字列に変換するには、TimeSpanのToString(String)メソッドを使えます。
    https://msdn.microsoft.com/ja-jp/library/ee372286.aspx
    https://msdn.microsoft.com/ja-jp/library/ee372287.aspx
引用返信 削除キー/
■33204 / inTopicNo.3)  Re[2]: ミリ秒から0:00:00か0:00:00.000....の書式にしたい
□投稿者/ YuO 一般人(1回)-(2016/01/03(Sun) 12:16:56)
  • アイコンNo33203に返信(Hongliangさんの記事)
    > 「時間」オブジェクトとしては、TimeSpanという型が用意されています。
    > 静的メソッドとしてFromMillisecondsが用意されているので、これを使ってミリ秒からTimeSpanオブジェクトを構築できます。

    元がStopwatchクラスなので,Stopwatch.ElapsedMilliseconds + TimeSpan.FromMillisecondsよりも,Stopwatch.Elapsedの方がよいですね。
    https://msdn.microsoft.com/ja-jp/library/system.diagnostics.stopwatch.elapsed.aspx

引用返信 削除キー/
■33205 / inTopicNo.4)  Re[3]: ミリ秒から0:00:00か0:00:00.000....の書式にしたい
□投稿者/ まなみ 一般人(2回)-(2016/01/04(Mon) 07:34:39)
  • アイコンご返信ありがとうございます。
    TimeSpan.FromMilliseconds(計算結果).ToString();
    でうまくいきました。
    ありがとうございます。
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -