Я хочу рассчитать промежуток времени между двумя моментами, которые я сохранил в базе данных. Так что буквально я хочу знать промежуток времени между двумя значениями.
14:10:20 - 10:05:15 = 02:05:05
Таким образом, результат будет 02:05:05.
Как я смогу добиться этого с помощью C#?
14:10:20 - это формат, в котором я сохранил его в своей базе данных.





Считайте два значения времени в переменные TimeSpan, затем выполните .Subtract() для большей переменной TimeSpan, чтобы получить результат TimeSpan.
Например. TimeSpan difference = t1.Subtract(t2);.
Объекты DateTime поддерживают оператор «-», поэтому вы можете просто считывать свое время в таких объектах и вычитать их. Чтобы проверить, проверьте это:
DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
Вашим первым шагом будет получение значений времени, хранящихся в вашей базе данных, в структурах .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();
Ваша реализация может отличаться, см. Документацию ADO.NET в библиотеке MSDN.
Если у вас уже есть строка, представляющая время, вы можете проанализировать строку в DateTime, используя статические методы
DateTime.Parse
или же
DateTime.ParseExact
В вашем случае вам может потребоваться использовать ParseExact, который может быть предоставлен со строкой формата, определяющей, как читать строку. Примеры можно найти в библиотеке MSDN.
Длительности в .NET хранятся внутри структуры TimeSpan. Получить время, прошедшее между датами, легко:
DateTime time1, time2; //filled with your timevalues from the db
TimeSpan elapsed = d2 - d1;
elapsed теперь содержит временной интервал между двумя DateTimes. У структуры есть несколько членов для доступа к TimeSpan. Загляните в библиотеку MSDN, чтобы найти нужные.
t1 - t2 будет делать то же самое и легче для глаз.