Tempo/Números

Analisador de duração ISO 8601

Analise uma string como "P3Y6M4DT12H30M5S" em um formato legível, ou monte uma string dessas a partir de anos/meses/dias/horas/minutos/segundos.


                        

An ISO 8601 duration (e.g. P3Y6M4DT12H30M5S) is a compact, unambiguous way to write a time span, used by many APIs and data formats, but hard to read without parsing it. This tool translates such a string into plain language and lets you build one from separate fields.

How to use it

Common uses

Things to keep in mind

The leading P stands for "period" and is required, just like the T that separates days from hours in the time part.

The base standard doesn't define a sign for durations — negative durations (to mean "ago") are only supported by specific implementations as an unofficial extension.

Artigo sobre esta ferramenta: ISO 8601 Duration: como escrever uma duração em formato padrão

Perguntas frequentes

O que significa uma string como P3Y6M4DT12H30M5S?

Este é o formato padrão de duração ISO 8601: P significa "period" (período), seguido de anos/meses/dias até a letra T, após a qual vêm horas/minutos/segundos. Neste exemplo, são 3 anos, 6 meses, 4 dias, 12 horas, 30 minutos e 5 segundos.

Como uma duração ISO difere de uma duração simples em horas?

Ao contrário de unidades fixas (como na calculadora de duração), os componentes "anos" e "meses" aqui são baseados em calendário e não têm um número fixo de segundos — sua duração exata depende das datas específicas às quais são aplicados.

O formato semanal P4W é suportado?

Sim, mas apenas ao analisar uma string existente. Ao construir sua própria string, semanas precisam ser expressas em dias, já que o ISO 8601 não permite combinar semanas com outros componentes em uma única string.

Posso indicar segundos ou minutos fracionários?

Sim, o padrão permite uma parte fracionária apenas no último componente da string — por exemplo, PT1.5S (1,5 segundo) ou PT1H30.5M (1 hora 30,5 minutos) são válidos, mas uma parte fracionária em qualquer componente que não seja o último não é.

Existem durações ISO negativas?

O padrão ISO 8601 básico não define um sinal para durações, mas algumas implementações (incluindo esta ferramenta) suportam um sinal de menos inicial para indicar "atrás" ou uma duração invertida — uma extensão comum, embora não oficial.

Artigos: Tempo/Números

Tempo Unix: por que os computadores contam o tempo desde 1970

Por que 1º de janeiro de 1970 se tornou o ponto de referência do tempo para a maioria dos sistemas de computador.

Expressões cron: como decifrar um agendamento de tarefas

Como decifrar uma expressão como */15 * * * * e saber exatamente quando a tarefa será executada.

Sistemas numéricos: para que servem o binário, o octal e o hexadecimal

Por que a cor #FF5733 no CSS é escrita com dígitos hexadecimais em vez de decimais.

Operações bit a bit: como AND, OR e XOR funcionam no nível dos bits

Em que o AND bit a bit difere do lógico, e para que serve operar sobre bits individuais de um número.

Diferença entre datas: por que contar dias é mais complicado do que parece

Por que subtrair datas de forma ingênua pode dar um resultado incorreto por causa dos anos bissextos.

Cálculo de idade: por que não é uma simples subtração de anos

Por que simplesmente subtrair os anos de nascimento pode dar uma idade um ano maior que a real.

Fusos horários: por que UTC não é a mesma coisa que GMT

Por que UTC nunca muda duas vezes ao ano, enquanto o horário de Londres (GMT/BST) muda.

Calculadora de duração: como somar corretamente horas, minutos e segundos

Por que ao somar minutos e segundos é preciso "transportar" o resto para a próxima casa, assim como na soma decimal.

Número da semana: por que países diferentes contam as semanas de forma diferente

Por que 1º de janeiro às vezes pertence à semana 52 ou 53 do ano anterior segundo o padrão ISO 8601.

Números romanos: como funciona um sistema sem zero nem posições

Por que IV significa 4 e não 6, e como funciona a regra de subtração nos números romanos.

IEEE 754: por que 0.1 + 0.2 não é igual a 0.3 no código

Por que em quase toda linguagem de programação 0.1 + 0.2 exibe 0.30000000000000004.

Número por extenso: para que transformar dígitos em palavras

Por que documentos bancários escrevem o valor tanto em dígitos quanto por extenso ao mesmo tempo.