terça-feira, 15 de setembro de 2015

Formatando datas e horas em Delphi 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, 22 de outubro de 2008", 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.

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.

Nenhum comentário:

Postar um comentário