Olá pessoal nesta Quick iremos continuar vendo datas no Delphi.
Variável global ShortDateFormat
A variável global ShortDateFormat fornece a formatação curta usada, por padrão, na conversão de datas em strings. Esta variável é usada pelas funções DateToStr(), DateTimeToStr() e DateTimeToString(). Os caracteres de formatação usados são:
y = Ano com 2 dígitos
yy = Ano com 2 dígitos
yyyy = Ano com 4 dígitos
m = Número do mês do ano sem o 0 no início
mm = Número do mês com 2 dígitos
mmm = Mês usando nomes curtos (Jan)
mmmm = Mês usando nomes longos (Janeiro)
d = Número do dia sem o 0 no início
dd = Número do dia com dois dígitos
ddd = Dia usando nomes curtos (Dom)
dddd = Dia usando nomes longos (Domingo)
Veja o trecho de código abaixo:
procedure TForm1.Button1Click(Sender: TObject);
var
data: TDateTime;
begin
// vamos construir a data
data := StrToDate('13/03/2009');
// vamos exibir usando a formatação padrão de ShortDateFormat
showMessage(DateToStr(data));
// vamos alterar o padrão de formatação de ShortDateFormat
ShortDateFormat := 'dd ''de'' mmmm ''de'' yyyy';
// experimente também
// ShortDateFormat := 'dd/mm/yyyy';
// vamos exibir usando a nova formatação
ShowMessage(DateToStr(data));
end;
Como a variável ShortDateFormat é indicada para uso global, é interessante você definir o
formato customizado em apenas um lugar de seus códigos, de forma a reaproveitar a
formatação nas demais partes de seus programas.
No Windows, a formatação inicial de ShowDateFormat vem de LOCALE_SSHORTDATE, uma
constante da API do Windows.
Formatando datas e horas usando a função FormatDateTime()
Em algumas situações precisamos formatar um TDateTime e exibir seus valores de data e hora
em formatos mais amigáveis ao usuário. Para isso o Delphi nos fornece a função FormatDateTime(), presente na unit SysUtils. Esta função recebe uma string de formatação e um TDateTime e retorna uma string contendo a data e hora formatadas. Veja um exemplo:
procedure TForm1.Button1Click(Sender: TObject);
var
data: TDateTime;
formatada: string;
begin
// vamos obter a data de hoje
data := Now;
// vamos formatar
formatada := FormatDateTime('dddd, dd "de" mmmm "de" yyyy',
data);
// vamos exibir o resultado
ShowMessage(formatada);
end;
Aqui a data será exibida em um formato semelhante à "sexta-feira, 25 de março de 2010", ou seja, o formato de data longa do Windows.
Para tirar o máximo proveito da função FormatDateTime(), é importante conhecer os caracteres de formatação permitidos na função. Veja:
c - Exibe a data usando o formato dado pela variável global ShortDateFormat, seguida pelas
horas usando o formato dado pelo variável global LongTimeFormat. As horas não serão
exibidas se o valor das horas indicarem meia-noite.
d - Exibe o dia como um número não precedido de zero (1-31).
dd - Exibe o dia como um número precedido de zero (01-31).
ddd - Exibe o dia como uma abreviação (Dom-Sáb) usando as strings fornecidas pela variável
global ShortDayNames.
dddd - Exibe o dia com o nome completo (Domingo-Sábado) usando as strings dadas pela
variável global LongDayNames.
ddddd - Exibe a data usando o formato dado pela variável global ShortDateFormat.
dddddd - Exibe a data usando o formato dado pela variável global LongDateFormat.
e - (Windows somente) - Exibe o ano na era/período atual como um número não precedido
por zero (somente os locales Japanese, Korean e Taiwanese).
ee - (Windows somente) - Exibe o ano na era/período atual como um número precedido por
zero (somente os locales Japanese, Korean e Taiwanese).
g - (Windows somente) - Exibe a era/período atual como uma abreviação (somente os locales
Japanese e Taiwanese).
gg - (Windows somente) - Exibe a era/período atual com um nome completo (somente os
locales Japanese e Taiwanese).
m - Exibe o mês como um número não precedido por zero (1-12). Se o especificador m seguir
imediatamente um especificador h ou hh, os minutos, e não é mês, são exibidos.
mm - Exibe o mês como um número precedido por zero (01-12). Se o especificador m seguir
imediatamente um especificador h ou hh, os minutos, e não é mês, são exibidos.
mmm - Exibe o mês como uma abreviação (Jan-Dez) usando as string dadas pela variável
global ShortMonthNames.
mmmm - Exibe o mês com um nome completo (Janeiro-Dezembro) usando as strings dadas
pela variável global LongMonthNames.
yy - Exibe o ano com dois dígitos (00-99).
yyyy - Exibe o ano com quatro dígitos (0000-9999).
h - Exibe a hora não precedida por zero (0-23).
hh - Exibe a hora precedida por zero (00-23).
n - Exibe os minutos não precedidos por zero (0-59).
nn - Exibe os minutos precedidos por zero (00-59).
s - Exibe os segundos não precedidos por zero (0-59).
ss - Exibe os segundos precedidos por zero (00-59).
z - Exibe os milisegundos não precedidos por zero (0-999).
zzz - Exibe os milisegundos precedidos por zero (000-999).
t - Exibe as horas usando o formato dado pela variável global ShortTimeFormat.
tt - Exibe as horas usando o formato dado pela variável global LongTimeFormat.
am/pm - Usa o relógio de 12 horas para os especificadores h ou h precedentes e exibe "am"
para as horas antes do meio-dia e "pm" para as horas depois do meio-dia. O especificador
am/pm pode ser em letras minúsculas, maiúsculas ou uma combinação destas.
a/p - Usa o relógio de 12 horas para os especificadores h ou h precedentes e exibe "a" para as
horas antes do meio-dia e "p" para as horas depois do meio-dia. O especificador a/p pode ser
em letras minúsculas, maiúsculas ou uma combinação destas.
ampm - Usa o relógio de 12 horas para os especificadores h ou hh e exibe o conteúdo da
variável global TimeAMString para qualquer hora antes do meio-dia e o conteúdo de
TimePMString para as horas depois do meio-dia.
/ - Exibe o caractere de separador de datas dado pela variável global DateSeparator.
: - Exibe o caractere de separador de horas dado pela variável global TimeSeparator.
'xx'/"xx" - Caracteres em aspas simples ou duplas não são formatados.
Conclusão: Podemos perceber que é muito útil a utilização de datas no Delphi, busco trazer a vocês o início, de como trabalhar com datas, utilizando a unit DateUtils, Abra esta unit e veja o conteúdo da mesma.
Vou ficando por aqui.
Um abraço
Rubens Antunes