Pular para o conteúdo principal

FormatDate

Descrição

A função FormatDate formata uma string de data em um formato específico de exibição. No dia a dia de SFMC no Brasil, você vai usar bastante para converter datas que vêm das Data Extensions (geralmente em formato americano ou ISO) para o padrão brasileiro DD/MM/AAAA. Ela retorna a data formatada como string, e se você não passar nenhum parâmetro além da data, ela usa as configurações de locale da sua Business Unit.

Sintaxe

FormatDate(dateString, dateFormat, timeFormat, localeCode)

Parâmetros

ParâmetroTipoObrigatórioDescrição
dateStringstringSimA string de data que você quer formatar.
dateFormatstringNãoFormato a aplicar na data. Pode ser um padrão customizado (ex: "dd/MM/yyyy") ou um dos valores predefinidos: "S" (formato curto do locale), "L" (formato longo do locale), "ISO" (ISO 8601) ou "RFC" (RFC 1123).
timeFormatstringNãoFormato a aplicar no horário (ex: "H:mm:ss", "hh:mm tt").
localeCodestringNãoCódigo de locale para formatação (ex: "pt_BR", "ja_JP").

Exemplo básico

Formatando a data de nascimento de um cliente para exibição no padrão brasileiro em um e-mail de aniversário:

%%[
SET @dataNascimento = "1990-03-15"
SET @dataFormatada = FormatDate(@dataNascimento, "dd/MM/yyyy")
]%%

Olá, João Silva! Sua data de nascimento cadastrada é: %%=v(@dataFormatada)=%%

Saída:

Olá, João Silva! Sua data de nascimento cadastrada é: 15/03/1990

Exemplo avançado

Em uma régua de relacionamento da Lojas Vitória, exibindo a data e horário de uma compra recente com formato completo em português, além de gerar um timestamp ISO para um link de rastreamento:

%%[
SET @dataCompra = "2024-08-05T13:41:23-06:00"

/* Data por extenso com dia da semana */
SET @dataExtenso = FormatDate(@dataCompra, "ddddd, d MMMM yyyy", "H:mm:ss", "pt_BR")

/* Formato curto para locale brasileiro */
SET @dataCurta = FormatDate(@dataCompra, "S", "", "pt_BR")

/* Formato longo para locale brasileiro */
SET @dataLonga = FormatDate(@dataCompra, "L", "", "pt_BR")

/* Timestamp ISO para sistemas */
SET @dataISO = FormatDate(@dataCompra, "ISO")

/* Formato customizado DD/MM/AAAA com horário 24h */
SET @dataHora = FormatDate(@dataCompra, "dd/MM/yyyy", "HH:mm")
]%%

Lojas Vitória - Confirmação de Compra

Data da compra: %%=v(@dataExtenso)=%%
Resumo: %%=v(@dataCurta)=%%
Data completa: %%=v(@dataLonga)=%%
Referência: %%=v(@dataHora)=%%
ID Rastreamento: %%=v(@dataISO)=%%

Saída:

Lojas Vitória - Confirmação de Compra

Data da compra: Monday, 5 August 2024 13:41:23
Resumo: 05/08/2024
Data completa: 5 de agosto de 2024
Referência: 05/08/2024 19:41
ID Rastreamento: 2024-08-05T13:41:23.0000000-06:00

Tabela de formatação

Referência rápida dos elementos de formatação disponíveis:

ElementoPadrãoExemplo (para 05/08/2024 20:00:05 PM -06:00)
Anoy ou yy24
yyy ou yyyy2024
MêsM8
MM08
MMMAug
MMMMAugust
Diad6
dd06
ddddSat
dddddSaturday
Hora (12h)h8
hh08
Hora (24h)H8
HH20
Minutom0
mm00
Segundos5
ss05
AM/PMtP
ttPM
Offsetz-6
zz-06
zzz-06:00

Formatos de entrada aceitos

A função aceita datas de entrada nos seguintes formatos:

  • ISO 8601 timestamp: 2024-08-05T13:41:23-06:00
  • ISO 8601 date: 2024-08-05
  • Notação americana: 8/5/2024 1:41 PM
  • Formato por extenso: 5 August 2024 ou August 5, 2024
  • Data e hora: 2024-08-05 1:41:23 PM
  • Somente hora: 1:41 PM
  • Notação chinesa/japonesa: 2024年8月5日
  • Notação coreana: 2024년 8월 5일

⚠️ Atenção: A função não aceita os seguintes formatos de entrada:

  • Datas com sufixo ordinal no dia (ex: August 5th, 2024 ou 5th August 2024)
  • Notação numérica little-endian (ex: 5/8/2024 para representar 5 de agosto) - isso é particularmente importante no Brasil, onde costumamos escrever dia/mês/ano. A string 5/8/2024 será interpretada como 8 de maio, não 5 de agosto
  • Nomes de meses em idiomas que não sejam inglês (ex: 5 agosto 2024 não funciona)
  • Numerais que não sejam arábicos ocidentais
  • Calendários que não sejam o gregoriano

Observações

  • Se você não passar nenhum parâmetro além do dateString, a função formata a data de acordo com as configurações de locale da sua Business Unit no Marketing Cloud.

  • Os formatos predefinidos "S" (curto) e "L" (longo) dependem do localeCode informado. Use "pt_BR" para obter formatos adequados ao público brasileiro.

💡 Dica: No Brasil, a armadilha mais comum é passar datas no formato DD/MM/AAAA como entrada. A função interpreta barras no padrão americano (mês/dia/ano). Para evitar problemas, sempre armazene e passe datas no formato ISO (AAAA-MM-DD) e use FormatDate apenas na saída para exibir no formato brasileiro.

⚠️ Atenção: Os nomes de dias e meses por extenso (como ddddd e MMMM) são gerados no idioma do locale. Para exibir "segunda-feira" e "agosto" em vez de "Monday" e "August", passe o localeCode como "pt_BR".

💡 Dica: Para combinar data formatada com outras informações em uma única string, use Concat. Para trabalhar com a data/hora atual do sistema, combine com Now.

Funções relacionadas

  • Now - retorna a data/hora atual, útil para formatar o momento do envio
  • GetSendTime - retorna a data/hora do envio
  • DateAdd - adiciona intervalos a uma data antes de formatá-la
  • DateDiff - calcula a diferença entre duas datas
  • DatePart - extrai partes específicas de uma data
  • DateParse - converte uma string em objeto de data
  • StringToDate - converte string em data
  • SystemDateToLocalDate - converte data do sistema para fuso local
  • LocalDateToSystemDate - converte data local para fuso do sistema
  • Format - formatação genérica de strings
  • Concat - concatena strings, útil para montar textos com datas formatadas