Medindo intervalos de tempo no C#
Autor: Erick Almeida | Publicado: 2007-05-23T10:21:00-03:00

  O C# trouxe grandes facilidades no tratamento de datas e horas. Calcular a diferença entre dois tempos ficou fácil e preciso.Neste artigo vou mostrar como calcular a diferença entre tempos usando os métodos e classes disponíveis no C#Um exemplo prático irá esclarecer melhor. Vou calcular a diferença entre dois eventos.Crie um novo projeto no C# e no formulário padrão coloque um botão de comando com o texto Iniciar e uma label com a propriedade Text vazia.Vai funcionar assim :          Quando o usuário clicar no botão Iniciar iremos definir as variáveis do tipo DateTime para calcular a diferença entre os tempos:                     t_inicio - receberá o valor do tempo quando o evento iniciar                       t_fim - receberá o valor do tempo no fim do evento                       t_diferenca - receberá a diferença calculada entre os tempos                       Após clicar no botão o texto será alterado para - Parar -           Quando o usuário clicar em - Parar - o evento será encerrado e a diferença entre os tempos calculada e exibida.        O código associado ao evento Click do botão - btnMedir - é dado a seguir:             {DateTime t_inicio;DateTime t_fim;TimeSpan t_diferenca;       if (btnMedir.Text == "Iniciar" )    {                lblDiferenca.Text = "";                t_inicio = DateTime.Now;         btnMedir.Text = "Parar";    }else    {        t_fim = DateTime.Now;        t_diferenca = t_fim.Subtract(t_inicio);        lblDiferenca.Text = t_diferenca.TotalSeconds.ToString("0.000000")  + " segundos";        btnMedir.Text = "Iniciar";    }}                                           A mágica está na classe TimeSpan usada e no método Subtract usado para calcular a diferença entre os tempos.Note que para expressar a diferença em segundos estou usando a propriedade TotalSeconds.A classe TimeSpan representa um intervalo de tempo . O valor é medido em números de ticks contido em uma instância e pode variar de Int64.MinValue a Int64.MaxValue .(Um tick é a menor unidade de tempo que pode ser definida e é igual a 100 nano segundos).     Podemos representar um TimeSpan como uma string no formato "[-]d.hh:mm:ss.ff" onde "-" é um sinal opcional para valores negativos.   Os principais métodos e propriedades de TimeSpan são :        Propriedades Públicas                     Days                  Obtêm o número total de dias representado pela instância                        Hours                  Obtêm o número total de horas representado pela instância.                        Milliseconds                  Obtêm o número total de milliseconds representado pela instância.                        Minutes                  Obtêm o número total de minutos representado pela instância.                        Seconds                  Obtêm o número total de segundos representado pela instância.                        Ticks                  Obtêm o valor da instância expressa em ticks.                        TotalDays                  Obtêm o valor da instância expressa em dias totais e fracionários.                        TotalHours                  Obtêm o valor da instância expressa em horas totais e fracionárias.                        TotalMilliseconds                  Obtêm o valor da instância expressa em milisegundos totais e não inteiros.                         TotalMinutes                  Obtêm o valor da instância expressa em minutos totais e não inteiros.                         TotalSeconds                  Obtêm o valor da instância expressa em segundos totais e não inteiros                 Métodos Públicos                    Add                  Incluir um TimeSpan especifico na instância.                       Compare                  Compara dois valores de TimeSpan e retorna um inteiro que indica seu relacionamento.                       Duration                  Retorna o TimeSpan cujo valor é o valor absoluto da instância.                       Equals                  Overloaded. Overridden. Retorna um valor que indica se duas instâncias de TimeSpan são iguais.                       Subtract                  Subtrai o valor definido de TimeSpan de sua instância.                       ToString                  Overridden. Retorna uma representação em string de um valor da instância.