Trabalhando com datas no VB.Net
Frequentemente no desenvolvimento de nossas aplicações necessitamos trabalhar com um tipo de dado especial: “DateTime”. Somar datas, calcular intervalos de tempo, obter a data e hora atual são algumas dessas operações realizadas com o tipo de dado “DateTime”. O namespace System.DateTime permite o acesso a métodos e propriedades que tratam de datas e horas. Na tabela abaixo, são listados as propriedades presentes na namespace System.DateTime.
Propriedades |
Retorno |
Date |
Retorna um datetime representando a data atual |
Day |
Retorna um inteiro representando o dial atual |
DayOfWeek |
Retorna um inteiro representando o dia da semana. Exemplo: Se o dia da semana for uma sexta-feira, a função retornará 5. |
DayOfYear |
Retorna um inteiro representando o dia do ano. Exemplo: Supondo que hoje seja 8/6/2007, esse método retornará 159 que corresponde ao dia do ano. |
Hour |
Retorna um inteiro representando a hora atual |
Millisecond |
Retorna um inteiro representando o milisegundo atual |
Minute |
Retorna um inteiro representando o minuto atual |
Month |
Retorna um inteiro representando o mês atual |
Now |
Retorna um datetime representando a data atual e a hora atual. |
Second |
Retorna um inteiro representando o segundo atual |
Ticks |
Os valores de hora são medidos em unidades de 100 nano segundos que são chamadas Ticks. Uma data especifica é o número de pulsos contados a partir da meia-noite de 01/01/0001 no calendário Gregoriano. |
TimeOfDay |
Retornar um TimeSpan que 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. |
Today |
Retorna um datetime com a data corrente. |
Year |
Retorna um inteiro representando o ano atual |
Tabela 1 – Lista com as propriedades da System.DateTime.
Além das propriedades listadas acima, a namespace System.DateTime apresenta uma lista de métodos específicos para trabalhar com cálculos de data. Na tabela abaixo é listado alguns dos principais métodos.
Método |
Retorno |
AddDays |
Adiciona um número especifico de dias a uma determinada data |
AddHours |
Adiciona um número especifico de horas a uma determinada hora |
AddMonths |
Adiciona um número especifico de meses a uma determinada data |
AddYears |
Adiciona um número especifico de anos a uma determinada data |
Compare |
Compara duas datas |
DaysInMonth |
Retorna um inteiro representando o numero de dias de um mês |
Equals |
Retorna um booleano representando se as datas são iguais. |
IsLeapYear |
Retorna um booleano representando se no ano informado é um ano bissexto. |
Parse |
Converte uma string em DateTime |
ToShortDateString |
Converte um valor em um tipo de data curto. Exemplo: 01/01/2007 08:00:01, converte em 01/01/2007 |
ToLongDateString |
Converte um valor em um tipo de data longo. Exemplo: 01/01/2007, converte em 01/01/2007 08:00:01 |
Tabela 2 – Lista com os eventos da System.DateTime.
Uma observação em relação ao VB6, é que o VB6 armazena a data e a hora em um formato diferente do VB.NET. Os programadores VB acessam valores numéricos de datas como um Double. As datas no VB.NET são armazenadas como inteiro longo. Para converter uma informação de data no formato antigo para o novo formato use as funções : ToOADate() e FromOADate().
Para testar a System.DateTime, crie um novo projeto (WindowsApplication) no Visual Studio. Net 2005. No evento Load desse projeto, iremos utilizar várias MsgBox que representará o resultado de cada operação com data. Veja na imagem abaixo o código desenvolvido para testar alguns dos métodos e propriedade dessa namespace.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Obtem data e hora atual do sistema
MsgBox(Date.Now)
'Obtendo dia da semana
MsgBox(String.Format("{0:dddd}", Now))
'Soma 20 dias a data atual
MsgBox(Date.Now.AddDays(20))
'Subtrai 15 dias da data atual
MsgBox(Date.Now.AddDays(-15))
'Exibe uma mensagem informando se o ano é bissexto
If Date.IsLeapYear(2007) = True Then
MsgBox("Ano Bissexto")
Else
MsgBox("Ano Não Bissexto")
End If
'Exibe o número de dias do mês para o ano de 2007 e mes 2
MsgBox("O numero de dias do mês é: " & Date.DaysInMonth(2007, 2))
End Sub
Listagem 1 – Exemplo de Métodos e Propriedades da namespace System.DateTime.
Chegamos ao final do artigo e podemos notar que com a namespace System.DateTime, nossos problemas com datas e horas acabaram.
Até o próximo.