Как вы рассчитываете накопительное время в C #? - PullRequest
1 голос
/ 25 сентября 2008

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

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

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

Как мне добиться этого с помощью C #?

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

Ответы [ 3 ]

7 голосов
/ 25 сентября 2008

Считайте два значения времени в переменные TimeSpan, затем выполните .Subtract() для большей переменной TimeSpan, чтобы получить результат TimeSpan.

например. TimeSpan difference = t1.Subtract(t2);.

3 голосов
/ 25 сентября 2008

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

0 голосов
/ 25 сентября 2008

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

DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...