Pergunta

Quero calcular o intervalo de tempo entre 2 vezes que salvei em um banco de dados.Então, literalmente, quero saber o período de tempo entre os 2 valores.

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

Então o resultado seria 02:05:05.

Como eu conseguiria isso usando C#?

14:10:20 é o formato que salvei em meu banco de dados.

Foi útil?

Solução

Leia os dois valores de tempo nas variáveis ​​TimeSpan e, em seguida, execute um .Subtract() na variável TimeSpan maior para obter o resultado TimeSpan.

Por exemplo. TimeSpan difference = t1.Subtract(t2);.

Outras dicas

Seu primeiro passo será obter os valores de tempo armazenados em seu banco de dados no .NET DateTime estruturas.

Se você os armazenou como valores SQL-DateTime no banco de dados, poderá obtê-los diretamente como DateTime.Seria algo assim:

SQLCommand getTimeCommand = new SQLCommand("SELECT time FROM table", dbConnection);
SQLDataReader myReader = getTimeCommand.ExecuteReader();
while (myReader.Read())
{
    DateTime time = myReader.GetDateTime(0);
}
myReader.Close();

Sua implementação pode ser diferente; consulte a documentação do ADO.NET na biblioteca MSDN.

Se você já possui uma string representando o tempo, você pode analisar a string em um DateTime usando os métodos estáticos

DateTime.Parse 

ou

DateTime.ParseExact

No seu caso, você pode precisar usar ParseExact, que pode ser fornecido com uma string de formato definindo como ler a string.Exemplos devem ser encontrados na biblioteca MSDN.

As durações no .NET são armazenadas dentro de um TimeSpan estrutura.Obter o tempo decorrido entre as datas é fácil:

DateTime time1, time2; //filled with your timevalues from the db
TimeSpan elapsed = d2 - d1;

elapsed agora contém o intervalo de tempo entre os dois DateTimes.Existem vários membros para a estrutura acessar o TimeSpan.Consulte a biblioteca MSDN para encontrar os que você precisa.

Os objetos DateTime suportam o operador "-" para que você possa apenas ler seus horários nesses objetos e subtraí-los. Para testar, confira isso:

DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top