質問
データベースに保存した 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 ライブラリにあります。
.NET の期間は、 TimeSpan
構造体。datetime から 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());