0

サンプルデートがあります

DateTime startDate = DateTime.Parse("2011-01-01 00:00:00");
DateTime endDate = DateTime.Parse("2011-01-03 01:01:03");

49:01:03 の経過時間にするにはどうすればよいですか? 日を含む文字列形式を取得できません。

現在、DataGridView の列でそれを使用したいと考えています。

以下はそのサンプルコードです。

private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
    e.Column.CellTemplate.Style.FormatProvider = new DayToHour();
    //e.Column.CellTemplate.Style.Format = "";
}

しかし、私はそれを機能させることができません:(。

注:日付と時刻の減算に問題はありません。フォーマットについてお尋ねします。

クローズ: IFormatProvider から継承するラッパー クラスを使用しました。

4

4 に答える 4

3

TimeSpan クラスを使用します。

TimeSpan ts = endDate - startDate;

次に、必要なすべての情報を TimeSpan クラスで取得します。私はフォーマットが問題ではないと仮定しています。

于 2012-06-07T08:04:26.697 に答える
1

そのような形式は利用できない可能性があると思うので、これらの行で値を取得する必要があります

TimeSpan diff = endDate - startDate;
String.Format("{0:00}hr {1:00}mn {2:00}sec",
                     Math.Truncate(diff.TotalHours),diff.Minutes,diff.Seconds);

このカスタムフォーマットプロバイダーもご覧ください

于 2012-06-07T08:36:40.103 に答える
0

これはうまくいきますか?

using System;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime startDate = DateTime.Parse("2011-01-01 00:00:00");
            DateTime endDate = DateTime.Parse("2011-01-03 01:01:03");

            TimeSpan elapsed = endDate - startDate;

            string result = string.Format("{0:d2}:{1:d2}:{2:d2}", elapsed.Days*24 + elapsed.Hours, elapsed.Minutes, elapsed.Seconds);

            Console.WriteLine(result);
        }
    }
}

それをコントロールに表示する方法がよくわかりません。正しいことを行う ToString() を実装するラッパー クラスを作成し、それを渡す必要がある場合があります。

于 2012-06-07T08:09:30.153 に答える
0
TimeSpan tp = endDate.Subtract(startDate);
string myString = tp.ToString("c");

myString経過時間を含める必要があります。他のタイムスパン形式については、これこれを確認してください。

于 2012-06-07T08:04:45.117 に答える