O que era uma simples tarefa no VB clássico era tirar a diferença entre duas data baseado no conjunto de funções que a linguagem oferecia. Algo parecido pode ser nas linguagens .NET, porém não de forma tão intuitiva. Existem novos objetos e classes (estruturas ou structs no caso do DateTime) que precisam ser conhecidas e utilizadas para conseguir a mesma informação.
O código abaixo mostra um exemplo de como obter tais dados de forma simples utilizando a linguagem C#.
1 2 3 4 5 6 7 8 9 | DateTime startTime = DateTime.Now; DateTime endTime = DateTime.Now.AddSeconds( 100 ); TimeSpan span = endTime.Subtract ( startTime ); Console.WriteLine( "Time Difference (seconds): " + span.Seconds ); Console.WriteLine( "Time Difference (minutes): " + span.Minutes ); Console.WriteLine( "Time Difference (hours): " + span.Hours ); Console.WriteLine( "Time Difference (days): " + span.Days ); |
No exemplo acima, foram criados dois objetos DateTime sendo um com a data atual e o outro com 100 segundo a mais do que a data corrente. Basta executar o método Subtract() da struct DateTime para obter um objeto TimeSpan com a diferença de valores entre as duas datas. O objeto TimeSpan representa um intervalo de tempo, ou duração de tempo, medida como um número positivo ou negativo de dias, horas, minutos, segundos e frações de segundo.
Saída:
1 2 3 4 | Time Difference (seconds): 40 Time Difference (minutes): 1 Time Difference (hours): 0 Time Difference (days): 0 |
Como pode ser visto, 100 segundo equivalem a exatos 1 minuto e 40 segundos, que é o resultado exato do código. Outras propriedades como a quantidade de milisegundos poderia ser também avaliadas.
Um descritivo completo da classe TimeSpan pode ser visto no MSDN: http://msdn2.microsoft.com/en-us/library/system.timespan.aspx
Apesar de ser uma abordagem diferenciada, trata-se de uma mecanismo poderoso de tratamento de data e hora no .NET.
Referência: http://www.dotnetspider.com/kb/Article552.aspx