Tokens de formato de data
Existem duas famílias amplamente usadas de strings de formato de data e elas se sobrepõem apenas o suficiente para ser perigoso. strftime — de C, e herdado por Python, Ruby, PHP e GNU date — usa tokens de porcentagem como %Y. Unicode LDML, usado por ICU, Java, moment e dayjs, usa letras repetidas como yyyy. No LDML, MM é um mês e mm é um minuto; obter esse par ao contrário é o bug clássico.
Cada linha abaixo é renderizada para o mesmo instante: Segunda-feira 9 de março de 2026, 14:05:07 UTC. Essa data é escolhida para que nada se esconda — um dia e mês de um único dígito expõem preenchimento com zeros, a hora da tarde faz o relógio de 12 e 24 horas diferirem visivelmente, e o dia da semana é inequívoco.
Uma coluna de equivalente vazia significa que o outro dialeto não tem um token único para isso e você precisa compor o valor sozinho. O conjunto de testes renderiza os campos do calendário com as funções de data próprias da plataforma e os compara com esta tabela, então os exemplos não podem se desviar da realidade.
Ano
4| strftime | LDML | Campo | Renderiza como |
|---|---|---|---|
| %Y | yyyy | Ano de quatro dígitos | 2026 |
| %y | yy | Ano de dois dígitosAmbíguo por construção. Evite em qualquer coisa armazenada. | 26 |
| %C | Século — o ano dividido por 100 | 20 | |
| %G | YYYY | Ano de numeração de semana ISODifere do ano do calendário no Ano Novo. Use apenas com o número de semana ISO. | 2026 |
Mês
4No LDML, MM é o mês e mm é o minuto.
| strftime | LDML | Campo | Renderiza como |
|---|---|---|---|
| %m | MM | Mês, preenchido com zero | 03 |
| %-m | M | Mês, sem preenchimento | 3 |
| %b | MMM | Nome de mês abreviado | Mar |
| %B | MMMM | Nome do mês completo | March |
Dia e dia da semana
8No LDML, dd é dia do mês e DDD é dia do ano.
| strftime | LDML | Campo | Renderiza como |
|---|---|---|---|
| %d | dd | Dia do mês, preenchido com zero | 09 |
| %-d | d | Dia do mês, sem preenchimento | 9 |
| %e | Dia do mês, preenchido com espaço | 9 | |
| %j | DDD | Dia do ano, 001–366 | 068 |
| %a | EEE | Nome de weekday abreviado | Mon |
| %A | EEEE | Nome do weekday completo | Monday |
| %u | Weekday como número, segunda é 1%w numera os mesmos dias a partir de domingo como 0. | 1 | |
| %V | ww | Número de semana ISO, semanas começando segunda | 11 |
Hora
8| strftime | LDML | Campo | Renderiza como |
|---|---|---|---|
| %H | HH | Hora no relógio de 24 horas | 14 |
| %-H | H | Hora, sem preenchimento | 14 |
| %I | hh | Hora no relógio de 12 horas | 02 |
| %M | mm | Minuto | 05 |
| %S | ss | Segundo | 07 |
| %3N | SSS | Milissegundos | 000 |
| %p | a | AM ou PM | PM |
| %s | Timestamp Unix — segundos desde 1970-01-01 UTC | 1773065107 |
Fuso horário
3Um deslocamento é um número; um nome de zona é uma regra. Apenas o nome sobrevive a uma mudança de DST.
| strftime | LDML | Campo | Renderiza como |
|---|---|---|---|
| %z | ZZ | Deslocamento UTC, sem dois-pontos | +0000 |
| %:z | XXX | Deslocamento UTC com um dois-pontos, conforme ISO 8601 quer | +00:00 |
| %Z | zzz | Abreviação de fuso horárioAs abreviações não são únicas — CST é pelo menos três zonas diferentes. | UTC |
Combinações comuns
7Construído a partir dos tokens acima — sem biblioteca necessária.
| strftime | LDML | Campo | Renderiza como |
|---|---|---|---|
| %F | yyyy-MM-dd | Data ISO | 2026-03-09 |
| %T | HH:mm:ss | Tempo de 24 horas | 14:05:07 |
| %FT%T%:z | yyyy-MM-dd'T'HH:mm:ssXXX | Timestamp ISO 8601 completoO formato para armazenar. Classifica como texto, inequívoco sobre o deslocamento. | 2026-03-09T14:05:07+00:00 |
| %a, %d %b %Y %T %z | EEE, dd MMM yyyy HH:mm:ss ZZ | RFC 2822 — cabeçalhos de e-mail e HTTP mais antigos | Mon, 09 Mar 2026 14:05:07 +0000 |
| %m/%d/%Y | MM/dd/yyyy | Convenção dos EUA, mês primeiro | 03/09/2026 |
| %d.%m.%Y | dd.MM.yyyy | Convenção europeia, dia primeiro | 09.03.2026 |
| %% | '' | Um sinal de porcentagem literal | % |