Domanda

Voglio calcolare l'intervallo di tempo tra 2 volte che ho salvato in un database. Quindi, letteralmente, voglio sapere il periodo di tempo tra i 2 valori.

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

Quindi il risultato sarebbe 02:05:05.

Come potrei ottenere questo risultato usando C #?

14:10:20 è il formato in cui l'ho salvato nel mio database.

È stato utile?

Soluzione

Leggi i due valori temporali nelle variabili TimeSpan, quindi esegui un .Subtract () sulla variabile TimeSpan più grande per ottenere il risultato TimeSpan.

es. Differenza TimeSpan = t1.Subtract (t2); .

Altri suggerimenti

Il tuo primo passo sarà quello di ottenere i valori temporali memorizzati nel tuo database nelle strutture .NET DateTime .

Se li hai archiviati come valori SQL-DateTime nel database, puoi ottenerli direttamente come DateTime . Sarebbe simile a questo:

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

L'implementazione potrebbe essere diversa, fare riferimento alla documentazione ADO.NET nella libreria MSDN.

Se hai già una stringa che rappresenta l'ora puoi analizzarla in un DateTime usando i metodi statici

DateTime.Parse 

o

DateTime.ParseExact

Nel tuo caso potresti dover usare ParseExact , che può essere fornito con una stringa di formato che definisce come leggere la stringa. Esempi dovrebbero essere trovati nella libreria MSDN.

Le durate in .NET sono memorizzate in una struttura TimeSpan . Ottenere il tempo trascorso tra i tempi dei dati è facile:

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

trascorso ora contiene l'intervallo di tempo tra i due DateTimes . Esistono diversi membri affinché la struttura acceda al TimeSpan . Cerca nella libreria MSDN per trovare quelli che ti servono.

Gli oggetti DateTime supportano il " - " operatore in modo da poter semplicemente leggere i tuoi tempi in tali oggetti e sottrarli. Per testare, controlla questo:

DateTime then = DateTime.Now;
Thread.Sleep(500);
DateTime now = DateTime.Now;
TimeSpan time = now - then;
MessageBox.Show(time.ToString());
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top