Compartilhar via


Tipo de dados Data (Visual Basic)

Contém valores IEEE de 64 bits (8 bytes) que representam datas e variam de 1º de janeiro do ano 0001 a 31 de dezembro do ano 9999 e horários das 12:00:00 AM (meia-noite) às 11:59:59.9999999 PM. Cada incremento representa 100 nanossegundos de tempo decorrido desde o início de 1º de janeiro do ano 1 no calendário gregoriano. O valor máximo representa 100 nanossegundos antes do início de 1º de janeiro do ano 10000.

Comentários

Use o tipo de dados Date para conter valores de data, de hora ou de data e hora.

O valor padrão de é Date 0:00:00 (meia-noite) em 1º de janeiro de 0001.

Você pode obter a data e a hora atuais da classe DateAndTime.

Requisitos de formato

Você deve colocar um literal Date dentro de sinais numéricos (# #). Você deve especificar o valor de data no formato d/M/aaaa, por exemplo #5/31/1993#, ou dd/MM/aaaa, por exemplo #1993-5-31#. Você pode usar barras ao especificar o ano primeiro. Esse requisito é independente das configurações de formato de data e hora do computador e da localidade.

O motivo dessa restrição é que o significado do código nunca deve mudar dependendo da localidade em que o aplicativo está em execução. Suponha que você codifique um literal Date de #3/4/1998# pretenda que isso signifique 4 de março de 1998. Em uma localidade que usa mm/dd/aaaa, 3/4/1998 compila conforme você deseja. Mas suponha que você implante o aplicativo em muitos países/regiões. Em uma localidade que usa dd/mm/aaaa, o literal codificado seria compilado para 3 de abril de 1998. Em uma localidade que usa aaaa/mm/dd, o literal seria inválido (abril de 1998, 0003) e causaria um erro do compilador.

Soluções Alternativas

Para converter um literal Date no formato da localidade ou em um formato personalizado, forneça o literal para a função Format, especificando um formato de data predefinido ou definido pelo usuário. O exemplo a seguir demonstra isso.

MsgBox("The formatted date is " & Format(#5/31/1993#, "dddd, d MMM yyyy"))

Como alternativa, você pode usar um dos construtores sobrecarregados da estrutura DateTime para montar um valor de data e hora. O exemplo a seguir cria um valor para representar 31 de maio de 1993 às 12h14.

Dim dateInMay As New System.DateTime(1993, 5, 31, 12, 14, 0)

Formato de hora

Você pode especificar o valor de tempo no formato de 12 horas ou 24 horas, por exemplo #1:15:30 PM# ou #13:15:30#. No entanto, se você não especificar os minutos ou os segundos, deverá especificar AM ou PM.

Padrões de data e hora

Se você não incluir uma data em um literal de data/hora, o Visual Basic definirá a parte de data do valor como 1º de janeiro de 0001. Se você não incluir uma hora em um literal de data/hora, o Visual Basic definirá a parte de hora do valor para o início do dia, ou seja, meia-noite (0:00:00).

Conversões de tipo

Se você converter um valor Date para o tipo String, o Visual Basic renderizará a data de acordo com o formato de data curto especificado pela localidade em tempo de execução e renderizará a hora de acordo com o formato de hora (12 horas ou 24 horas) especificado pela localidade em tempo de execução.

Dicas de programação

  • Considerações sobre interoperabilidade. Se você estiver estabelecendo interface com componentes não gravados para o .NET Framework, por exemplo, objetos de Automação ou COM, tenha em mente que os tipos de data/hora em outros ambientes não são compatíveis com o tipo Date do Visual Basic. Se você estiver passando um argumento de data/hora para tal componente, declare-o como Double em vez de Date no novo código Visual Basic e use os métodos de conversão DateTime.FromOADate e DateTime.ToOADate.

  • Caracteres de tipo. Date não tem nenhum caractere de tipo literal nem caractere de identificação de tipo. No entanto, o compilador trata literais entre sinais numéricos (# #) como Date.

  • Tipo do Framework. O tipo correspondente no .NET Framework é a estrutura System.DateTime.

Exemplo

Uma variável ou constante do tipo de dados Date contém a data e a hora. O exemplo a seguir ilustra essa situação.

Dim someDateAndTime As Date = #8/13/2002 12:14 PM#

Confira também