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.