quarta-feira, 23 de maio de 2007

Medindo intervalos de tempo no C#

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.

2 comentários:

José Palestra disse...

Muito bom...

Replicas de Relogios Famosos disse...

INFORMATIVO!! Proteja-se dos assaltos! Relógios Réplicas com qualidade AAA é uma boa opção com baixo custo. Loja no Brasil em São Paulo você encontra Replica de Relógio de marcas famosas como: Réplicas de Relógios Rolex , Replicas de Relógios Breitling , Réplicas de Relógios Tag Heuer e várias outras nos gêneros masculinos e femininos.
Acesse: www.replicasderelogiosfamosos.eco.br.

Neobux