Você está na página 1de 6

10/08/13

O tratamento de datas no VB.NET

VB.NET e o tratamento de datas


Se voc sente arrepios s em pensar em trabalhar com datas e horas por achar a formatao de datas e horas um quesito muito complicado , relaxe... O VB.NET chegou para resolver este problema , as funes includas no Namespace String.DataTime prometem facilitar a nossa vida quando deparamos com a tarefa de formatar datas e horas... As datas e horas no VB.NET so tratadas por ticks que guardam a quantidade de nano segundos a partir de 01/01/0001 12:00 AM e onde cada tick corresponde a 100 nanos segundos. No VB.NET podemos usar as configuraes regionais do Painel de Controle ou o Namespace System.Globalization.CultureInfo definindo a linguagem e o pas de referncia. O formato mais usado o FormatDateTime(valor data,formato) onde os formatos permitidos so : DataFormat.LongDate - formata a data completa de acordo com as configuraes regionais do painel de controle DataFormat.ShortDate - mostra a data curta conforme com as configuraes regionais do painel de controle DataFormat.LongTime - exibe a hora completa conforme com as configuraes regionais do painel de controle DataFormat.ShortDtime - exibe a hora curta conforme com as configuraes regionais do painel de controle Podemos usar os seguintes formato de caracteres em uma formatao para o System.DataTime:

Formato usado Expresso usada


d D f F g G M, m R,r s t u U y
Tabela 1.0

Tipo

MM/mm/yyyy ShortDate dddd,MMM dd,yyyy LongDate dddd,MMMM dd, yyyy HH:mm Data Completa dddd,MMMM dd, yyyy HH:mm:ss Data hora Completa MM/dd/yyyy HH:mm Data Geral MM/dd/yyyy HH:mm:ss Data Geral MMMM dd Ms / dia e Data ddd, dd MMM yyyy HH ':' mm ':' SS 'GMT' Padro GMT yyyy-MM-dd HH:mm:ss Short Date Local HH:mm:ss Long Time yyyy-MM-dd HH:mm:ss Formato Universal dddd, MMMM dd, yyyy HH:mm:ss Universal completo MMMM , yyyy Ms / ano de uma Data

As declaraes Date e Time usadas no VB6 que usavam 4 bytes foram substitudas pelas
declaraes Today e TimeOfDay que usam o tipo de dado DateTime de 8 bytes: Visual Basic 6.0 Date Time VB.NET Today TimeOfDay

Alm disto o VB.NET possui a classe Calendar e a classe CultureInfo presentes no Namespace System.Globalization onde podemos usar classes para outros calendrios : Hebreu , Coreano , Japons , etc. Pra que serve isto ?? Bem , voc pode descobrir a data atual em diversos calendrios sem muito esforo, afinal estamos em plena copa do mundo na Coria e Japo ). Vamos criar uma aplicao no VB.NET do tipo console e digitar o cdigo abaixo:
www.macoratti.net/vbn_data.htm 1/6

10/08/13

O tratamento de datas no VB.NET

Obs: Para lembrar como criar um aplicao do tipo console leia : Minha primeira aplicao VB.NET Module Module1 Sub Main() Dim arabe As New Globalization.HijriCalendar() Dim japones As New Globalization.JapaneseCalendar() Dim koreano As New Globalization.KoreanCalendar() Console.WriteLine("No Calendrio Ocidental hoje dia : " & Today) Console.WriteLine("No Calendrio Arabe hoje dia : " & arabe.GetDayOfMonth(Today) & "/" & arabe.GetMonth(Today) & "/" & arabe.GetYear(Today)) Console.WriteLine("No Calendrio Japo hoje dia : " & japones.GetDayOfMonth(Today) & "/" & japones.GetMonth(Today) & "/" & japones.GetYear(Today)) Console.WriteLine("No Calendrio Coreano hoje dia : " & koreano.GetDayOfMonth(Today) & "/" & koreano.GetMonth(Today) & "/" & koreano.GetYear(Today)) Console.Read() End Sub End Module O resultado do processamento ser : A data atual em diversos Calendrios no VB.NET Voltando ao artigo temos que com base na tabela 1.0 podemos montar um formato para a data de acordo com as nossas necessidades . Vejamos um cdigo exemplo envolvendo os formatos mais usados : Module Module1 Sub Main() Dim Data_hoje As DateTime = DateTime.Now Console.WriteLine("--------------------------------------------------") Console.WriteLine("Data de hoje (DateTime.Now) : " & Data_hoje) Console.WriteLine("------------------------------------------------ --") Console.WriteLine("Formato FormatDateTime(data,DateFormat.tipo_data)") Console.WriteLine("--------------------------------------------------") Console.WriteLine("General Date : " & FormatDateTime(Data_hoje, DateFormat.GeneralDate)) Console.WriteLine("LongDate : " & FormatDateTime(Data_hoje, DateFormat.LongDate)) Console.WriteLine("LongTime : " & FormatDateTime(Data_hoje, DateFormat.LongTime)) Console.WriteLine("ShortDate : " & FormatDateTime(Data_hoje, DateFormat.ShortDate)) Console.WriteLine("ShortTime : " &
www.macoratti.net/vbn_data.htm 2/6

10/08/13

O tratamento de datas no VB.NET

FormatDateTime(Data_hoje, DateFormat.ShortTime)) Console.Read() End Sub End Module O resultado o seguinte:

vamos agora usar os formatos fornecidos pelo VB.NET e ver o resultado. Vamos usar a funo Format(data,formato) onde data data que vamos formatar e formato o tipo de formatao aplicada. Veja o cdigo como ficar: Sub Main() Dim Data_hoje As DateTime = DateTime.Now Console.WriteLine("--------------------------------------------------") Console.WriteLine("Usando => Format(Data_hoje,'formato')") Console.WriteLine("--------------------------------------------------") Console.WriteLine("Formato para dia ") Console.WriteLine("--------------------------------------------------") Console.WriteLine("d : " & Format(Data_hoje, "d")) Console.WriteLine("dd : " & Format(Data_hoje, "dd")) Console.WriteLine("ddd : " & Format(Data_hoje, "ddd")) Console.WriteLine("dddd : " & Format(Data_hoje, "dddd")) Console.WriteLine("--------------------------------------------------") Console.WriteLine("Formato para ms ") Console.WriteLine("--------------------------------------------------") Console.WriteLine("M : " & Format(Data_hoje, "M")) Console.WriteLine("MM : " & Format(Data_hoje, "MM")) Console.WriteLine("MMM : " & Format(Data_hoje, "MMM")) Console.WriteLine("MMMM : " & Format(Data_hoje, "MMM")) Console.WriteLine("--------------------------------------------------") Console.WriteLine("Formato para ano ") Console.WriteLine("--------------------------------------------------") Console.WriteLine("Y : " & Format(Data_hoje, "y")) Console.WriteLine("YY : " & Format(Data_hoje, "yy"))
www.macoratti.net/vbn_data.htm 3/6

10/08/13

O tratamento de datas no VB.NET

Console.WriteLine("YYYY : " & Format(Data_hoje, "yyyy")) Console.Read() End Sub End Module Executando o cdigo acima teremos:

Vejamos agora a formatao das horas usando a funo Format(data,formato). O cdigo dado a seguir: Module Module1 Sub Main() Dim Data_hoje As DateTime = DateTime.Now Console.WriteLine("--------------------------------------------------") Console.WriteLine("Usando => Format(Data_hoje,'formato')") Console.WriteLine("--------------------------------------------------") Console.WriteLine("Hora atual hh:mm:ss : " & Format(Data_hoje, "hh:mm:ss")) Console.WriteLine("--------------------------------------------------") Console.WriteLine("Formato para horas ") Console.WriteLine("--------------------------------------------------") Console.WriteLine("hh : " & Format(Data_hoje, "hh")) Console.WriteLine("HH : " & Format(Data_hoje, "HH")) Console.WriteLine("--------------------------------------------------") Console.WriteLine("Formato para minutos ") Console.WriteLine("--------------------------------------------------") Console.WriteLine("mm : " & Format(Data_hoje, "mm"))
www.macoratti.net/vbn_data.htm 4/6

10/08/13

O tratamento de datas no VB.NET

Console.WriteLine("--------------------------------------------------") Console.WriteLine("Formato para segundos ") Console.WriteLine("--------------------------------------------------") Console.WriteLine("s : " & Format(Data_hoje, "ss")) Console.Read() End Sub End Module O resultado o seguinte:

Novos Mtodos e Propriedades para tratamento de datas no VB.NET


Agora veremos os principais mtodos e propriedades para tratamento de datas presentes no VB.NET:
1-

especificados.

DateTime.DaysInMonth(year,month) - Retorna o nmero de dias em um ms e ano

Parmetros : Ano(Year) e Ms(Month) (um nmero entre 1 e 12) Ex: Se o ms for fevereiro -(ms igual a 2)- o valor retornado pode ser 28 ou 29 dependendo do ano informado. Exceo : Erro que pode ser gerado em tempo de execuo. Tipo de Exeo(Exception Type) ArgumentOutOfRangeException Condio ms(month) menor que 1 e maior que 12

Ex: DateTime.DaysInMonth(2002, 2) ir retornar 28 , que o nmero de dias do ms 02 para o ano de 2002.


2-

bissexto.

DateTime.IsLeapYear(year) - Retorna True se o ano for bissexto e False se no for

Parametro : ano (year ) informado com quatro dgitos.Ex: 2002.


Ex: DateTime.IsLeapYear(2002) ir retornar False , pois 2002 , no bissexto.
3-

DateTime.MaxValue - Representa o valor mximo definido em DateTime.


5/6

www.macoratti.net/vbn_data.htm

10/08/13
4-

O tratamento de datas no VB.NET

DateTime.MinValue - Representa o valor mnimo definido em DateTime.

A seguir o cdigo e o resultado para os mtodos acima: Module Module1 Sub Main() Dim Data_hoje As DateTime = DateTime.Now Console.WriteLine("--------------------------------------------------") Console.WriteLine(" Novos mtodos p/ tratamento de datas no VB.NET") Console.WriteLine("--------------------------------------------------") Console.WriteLine("DaysInMonth(ano,mes): " & DateTime.DaysInMonth(2002, 2)) Console.WriteLine("MaxValue : " & DateTime.MaxValue) Console.WriteLine("MinValue : " & DateTime.MinValue) Console.WriteLine("IsLeapYear(ano) : " & DateTime.IsLeapYear(2002)) Console.Read() End Sub End Module Para resumir um pouco veja abaixo uma tabela onde listamos quais os elementos da linguagem voc pode usar para realizar determinada tarefa relacionada com data/hora: Ao a realizar Obter a Data e hora atual Realizar clculos com datas Retornar uma data. Retornar uma hora.. Definir Data e/ou hora.. Medir um processo. Elemento da linguagem a utilizar Now, Today, TimeOfDay DateAdd, DateDiff, DatePart DateSerial, DateValue, MonthName, WeekDayName TimeSerial, TimeValue DateString, TimeOfDay, TimeString, Today Timer

Na continuao deste artigo iremos abordar o clculo envolvendo datas no VB.NET , at l...

Jos Carlos Macoratti

www.macoratti.net/vbn_data.htm

6/6

Você também pode gostar