データベースに保存した2回の期間を計算したい。したがって、文字通り、2つの値の間の時間の長さを知りたいのです。
14:10:20-10:05:15 = 02:05:05
したがって、結果は02:05:05になります。
C#を使用してこれをどのように達成できますか?
14:10:20は、データベースに保存した形式です。
2つの時間値をTimeSpan変数に読み込み、.Subtract()
より大きなTimeSpan変数でを実行して、TimeSpanの結果を取得します。
例TimeSpan difference = t1.Subtract(t2);
:
最初のステップは、データベースに格納されている時間値を .NET 構造体に取得することDateTime
です。
それらをデータベースに SQL-DateTime 値として保存した場合は、それらを として直接取得できますDateTime
。次のようになります。
SQLCommand getTimeCommand = new SQLCommand("SELECT time FROM table", dbConnection);
SQLDataReader myReader = getTimeCommand.ExecuteReader();
while (myReader.Read())
{
DateTime time = myReader.GetDateTime(0);
}
myReader.Close();
実装は異なる場合があります。MSDN ライブラリの ADO.NET ドキュメントを参照してください。
時刻を表す文字列を既に取得している場合はDateTime
、静的メソッドを使用して文字列を解析して
DateTime.Parse
また
DateTime.ParseExact
あなたのケースParseExact
では、文字列の読み方を定義するフォーマット文字列を提供できる を使用する必要があるかもしれません。例は MSDN ライブラリにあります。
TimeSpan
.NET の期間は、構造体内に格納されます。datetime までの経過時間は簡単に取得できます。
DateTime time1, time2; //filled with your timevalues from the db
TimeSpan elapsed = d2 - d1;
elapsed
には、2 つの間のタイムスパンが含まれるようになりましたDateTimes
。構造体が にアクセスするためのメンバーがいくつかありますTimeSpan
。MSDN ライブラリを調べて、必要なものを見つけてください。
DateTimeオブジェクトは「-」演算子をサポートしているため、そのようなオブジェクトに時間を読み取って減算することができます。テストするには、これをチェックしてください:
DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());