Sobre este problema HTML
O elemento <time> representa um momento específico ou duração no tempo. Os navegadores, motores de pesquisa e tecnologias assistivas dependem da análise do seu valor para compreender dados temporais programaticamente. O elemento pode obter o seu valor legível por máquina de dois lugares: do atributo datetime, ou, se esse atributo estiver ausente, diretamente do conteúdo de texto do elemento.
Quando não há atributo datetime, o próprio conteúdo de texto deve estar num dos formatos válidos especificados pelo padrão HTML. É aqui que o erro tipicamente ocorre—os autores escrevem uma data legível por humanos como “20 de março, 2025” ou “terça-feira passada” como conteúdo de texto sem fornecer um atributo datetime, e o validador rejeita-o porque essa string não é analisável por máquina.
Por que isto é importante
-
Legibilidade por máquina: Os motores de pesquisa (via dados estruturados) e funcionalidades do navegador (como integração de calendário) dependem da análise do valor do elemento
<time>. Um formato inválido significa que estas ferramentas não conseguem compreender a data ou hora. - Acessibilidade: Leitores de ecrã e outras tecnologias assistivas podem usar o datetime legível por máquina para apresentar informações temporais de forma mais útil aos utilizadores.
- Conformidade com padrões: A especificação HTML define explicitamente quais formatos são válidos. Usar qualquer outra coisa torna o seu documento não-conforme.
Como corrigir
Você tem duas opções:
-
Adicionar um atributo
datetimecom o valor legível por máquina, e manter o texto legível por humanos como conteúdo visível. Esta é a abordagem mais comum e prática. - Usar um formato válido diretamente como conteúdo de texto se não se importar de mostrar um formato legível por máquina aos utilizadores.
Formatos válidos
Aqui está uma referência dos formatos aceites para o elemento <time>:
| Tipo | Exemplo(s) |
|---|---|
| Ano válido |
2011 |
| Mês válido |
2011-11 |
| Data válida |
2011-11-18 |
| Data válida sem ano |
11-18 |
| Semana válida |
2011-W47 |
| Hora válida |
14:54, 14:54:39, 14:54:39.929 |
| Data e hora local válida |
2011-11-18T14:54:39.929 ou 2011-11-18 14:54:39.929 |
| Data e hora global válida |
2011-11-18T14:54:39.929Z, 2011-11-18T14:54:39.929-04:00 |
| Duração válida |
PT4H18M3S, P2D (2 dias), P3DT4H (3 dias, 4 horas) |
Exemplos
Incorreto: Texto legível por humanos sem atributo datetime
O validador reportará o erro porque “20 de março, 2025” não é um formato legível por máquina válido:
<p>O concerto é no <time>20 de março, 2025</time>.</p>
Incorreto: Texto informal como conteúdo
Similarmente, strings de data casuais não são válidas:
<p>Atualizado <time>sexta-feira passada</time>.</p>
Correto: Usar o atributo datetime
Adicione um atributo datetime com o valor legível por máquina e mantenha o texto amigável para humanos visível:
<p>O concerto é no <time datetime="2025-03-20">20 de março, 2025</time>.</p>
Correto: Incluir hora e fuso horário
<p>
O evento começa às
<time datetime="2025-03-20T13:00-05:00">13:00 EST no dia 20 de março, 2025</time>.
</p>
Correto: Formato legível por máquina como conteúdo de texto
Se não for fornecido nenhum atributo datetime, o próprio conteúdo de texto deve estar num formato válido:
<p>Data: <time>2025-03-20</time></p>
Correto: Representar uma duração
<p>Tempo de cozedura: <time datetime="PT1H30M">1 hora e 30 minutos</time>.</p>
Correto: Usar apenas um valor de hora
<p>A loja abre às <time>09:00</time> todos os dias.</p>
Como regra geral, sempre que quiser exibir uma data ou hora de forma natural e amigável para humanos, emparelhe-a sempre com um atributo datetime que contenha o equivalente legível por máquina. Isto mantém o seu HTML válido, o seu conteúdo acessível e os seus dados temporais úteis para máquinas.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.