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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| dateString | string | Sim | A string de data que você quer formatar. |
| dateFormat | string | Não | Formato 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). |
| timeFormat | string | Não | Formato a aplicar no horário (ex: "H:mm:ss", "hh:mm tt"). |
| localeCode | string | Não | Có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:
| Elemento | Padrão | Exemplo (para 05/08/2024 20:00:05 PM -06:00) |
|---|---|---|
| Ano | y ou yy | 24 |
yyy ou yyyy | 2024 | |
| Mês | M | 8 |
MM | 08 | |
MMM | Aug | |
MMMM | August | |
| Dia | d | 6 |
dd | 06 | |
dddd | Sat | |
ddddd | Saturday | |
| Hora (12h) | h | 8 |
hh | 08 | |
| Hora (24h) | H | 8 |
HH | 20 | |
| Minuto | m | 0 |
mm | 00 | |
| Segundo | s | 5 |
ss | 05 | |
| AM/PM | t | P |
tt | PM | |
| Offset | z | -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 2024ouAugust 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, 2024ou5th August 2024)- Notação numérica little-endian (ex:
5/8/2024para representar 5 de agosto) - isso é particularmente importante no Brasil, onde costumamos escrever dia/mês/ano. A string5/8/2024será interpretada como 8 de maio, não 5 de agosto- Nomes de meses em idiomas que não sejam inglês (ex:
5 agosto 2024nã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 dolocaleCodeinformado. Use"pt_BR"para obter formatos adequados ao público brasileiro.
💡 Dica: No Brasil, a armadilha mais comum é passar datas no formato
DD/MM/AAAAcomo 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 useFormatDateapenas na saída para exibir no formato brasileiro.
⚠️ Atenção: Os nomes de dias e meses por extenso (como
dddddeMMMM) são gerados no idioma do locale. Para exibir "segunda-feira" e "agosto" em vez de "Monday" e "August", passe olocaleCodecomo"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