Как вы рассчитываете накопительное время в C#?

StackOverflow https://stackoverflow.com/questions/131812

  •  02-07-2019
  •  | 
  •  

Вопрос

Я хочу рассчитать промежуток времени между двумя значениями, которые я сохранил в базе данных.Итак, буквально я хочу знать промежуток времени между двумя значениями.

14:10:20 - 10:05:15 = 02:05:05

Таким образом, результат будет 02:05:05.

Как я смогу добиться этого с помощью С#?

14:10:20 — это формат, в котором я сохранил его в своей базе данных.

Это было полезно?

Решение

Считайте два значения времени в переменные 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();

Ваша реализация может отличаться, обратитесь к документации 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, чтобы найти те, которые вам нужны.

Объекты DateTime поддерживают оператор «-», поэтому вы можете просто считать время в таких объектах и ​​вычесть его.Чтобы проверить, проверьте это:

DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top