ISO 8601

O padrão internacional ISO 8601 especifica a representação digital da data e hora - respectivamente com base no calendário gregoriano e no sistema de 24 horas . Esta notação, criada em 1988, tem como objetivo principal evitar qualquer risco de confusão nas comunicações internacionais devido ao grande número de notações nacionais diferentes. Ele também tem muitas vantagens para uso em computador sobre outras notações.

Existem seis níveis de granularidade neste formato, dependendo do aplicativo. Por isso, é possível omitir alguns elementos.

Exemplos:

No entanto, deve-se notar que a organização internacional de padronização ( ISO 8601) elimina qualquer confusão ao estabelecer um formato internacionalmente reconhecido para a representação da data: 1977-04-22 .

A data ISO atual:
2021-05-04
A hora ISO atual [ atualização ] :
14: 21: 13Z
A data e hora ISO atuais:
2021-05-04T14: 21: 13Z
ou :
2021-W18-2T14: 21: 13Z

Histórico

A primeira edição da ISO 8601 foi publicada em 1988. Ela substituiu e unificou vários padrões ISO que tratam de diferentes aspectos de notação de data e hora (padrões ISO 2014, 2015, 2711, 3307 e 4031). Este padrão internacional foi atualizado em 2000, depois em 2004 e em 2019, foi dividido em 2 partes: ISO 8601-1: 2019 (regras básicas) e 8601-2: 2019 (extensões).

A versão de 1989 da norma ISO foi adotada pelo sistema de padronização francês sob a referência NF  EN 28601: 1992 . Este padrão francês foi cancelado em7 de outubro de 2011. As edições 2019 ISO devem ser usadas em seu lugar.

A notação numérica do mais extenso ao mais preciso (aaaa-mm-dd) foi introduzida pelo padrão ISO 2014: 1976; a numeração de semanas pela ISO 2015: 1976. Ambos estão integrados ao padrão ISO 8601.

O comitê técnico TC 154 cuida da manutenção da norma ISO 8601.

Princípio

Data e hora

Os elementos seguem uns aos outros em ordem crescente de precisão. Assim, o menos preciso, o ano , vem primeiro (em 4 dígitos), seguido pelo mês (2 dígitos, de '01' a '12') e a data (de '01' a '31'). Cada elemento é separado do anterior por um traço '-'. A data é baseada no calendário gregoriano . Assim, se fosse necessário representar anos antes da implementação deste calendário (antes de 1582-12-20 na França), um método de contagem entre as partes que trocam informações deve ser previamente acordado.

Em seguida, é indicada a hora do dia, que começa com a letra T (para hora , a hora do dia em inglês), seguida dos seguintes elementos, sempre ordenados por precisão crescente: horas (de '00' a '24 ') , minutos (de '00' a '59') e segundos ('00' a '60') usando dois pontos ':' como separador. Isso pode ser seguido por uma vírgula ',' depois por decimais de um segundo, em uma quantidade necessária para a precisão exigida (exemplo: "T15: 23: 56.9854"). Às vezes encontramos um ponto final em vez de uma vírgula, especialmente entre falantes de inglês; o padrão tolera esse uso, mas recomenda a vírgula.

Observações

Fuso horário

Para todos os formatos aceitos no ISO 8601, é possível especificar o fuso horário . O sinal de início é positivo (+) quando a hora local está à frente do Tempo Universal (UTC) (fusos horários a leste do Meridiano do Meridiano de Greenwich: fusos horários da Europa Central, África Central e África Central. Leste, Ásia, Oeste e Pacífico Central ) Caso contrário, negativo (-) (fusos horários de alguns países na Europa Ocidental ou na África Ocidental, nas Américas, no Pacífico Oriental). Existem três maneiras de indicar este fuso horário:

  1. adicionando + hhmi ou - hhmi em formatos básicos, hh representando o número de horas e mi o número de minutos deslocados da hora universal (o sinal menos é geralmente o caractere menos hífen ASCII , mas algumas representações permitem o sinal menos matemático, o cuja largura é igual à do sinal de mais);
  2. adicionando + hh : mi ou - hh : mi em formatos estendidos, o separador de tempo : sendo escrito literalmente;
  3. inserindo literalmente um Z final quando se trata da hora UTC. ( Z para Meridian Z ero , ou meridiano (in) Z ero . Também conhecido como Z ulu -proncer Zulu - no alfabeto Rádio Internacional ).
UTC

Se a hora estiver em UTC, você deve adicionar um Z após a hora e sem espaço. Portanto, 09:30 UTC é representado 09: 30Z ou 0930Z .

Fuso horário de UTC

Para evitar possíveis confusões, este é realmente um deslocamento expresso do horário UTC (e não em direção a ). O que faz sentido, pois é uma indicação de fuso horário. Assim, T09: 00: 00 + 01: 00 corresponde a T08: 00: 00Z (9 horas no fuso horário tendo uma hora a mais que UTC, portanto, 8 horas em UTC). 09: 00 + 01: 00 não representa a adição de 09:00 e 01:00, mas sim esta adição: 09:00  = UTC  +01: 00 .

Formatos usuais

Abaixo, as seguintes notações são usadas para simbolizar os formatos apresentados:

No caso de notação de frações (em horas, minutos ou segundos), o separador decimal é uma vírgula ou um ponto, sendo a vírgula o sinal preferido.

Os seguintes formatos podem ser usados ​​para indicar:

formato básico: " aaaa " (ex: 1997) sem formato estendido nenhum formato básico. formato estendido: " aaaa - mm " (ex: 1997−07) formato básico: " aaaammqq " (ex: 19970716) formato estendido: " aaaa - mm - qq " (ex: 1997−07−16) formato básico: " aaaaqqq " (ex: 1997206) formato estendido: " aaaa - qqq " (ex: 1997−206) formato básico: " AAAA W wwj " (ex: 2004W453) formato estendido: " AAAA −W ww - j " (ex: 2004 - W45−3) formato básico: " aaaammqq T hhmizzzzz " (ex: 19970716T1920 + 0100) formato estendido: " aaaa - mm - qq T hh : mizzzzzz " (ex: 1997−07−16T19: 20 + 01: 00) formato básico: " aaaammqq T hhmisszzzzz " (ex: 19970716T192030 + 0100) formato estendido: " aaaa - mm - qq T hh : mi : sszzzzzz " (ex: 1997−07−16T19: 20: 30 + 01: 00) formato básico: " aaaammqq T hhmissnzzzzz " (ex: 19970716T1920304 + 0100) formato estendido: " aaaa - mm - qq T hh : mi : ss , nzzzzzz " (ex: 1997−07−16T19: 20: 30,4 + 01: 00) formato básico: " T hhzzzzz " (ex: T19 + 0100) formato estendido: " T hhzzzzzz " (ex: T19 + 01: 00) formato básico: " T hhmizzzzz " (ex: T1920 + 0100) formato estendido: " T hh : mizzzzzz " (ex: T19: 20 + 01: 00) formato básico: " T hhmisszzzzz " (ex: T192030 + 0100) formato estendido: " T hh : mi : sszzzzzz " (ex: T19: 20: 30 + 01: 00) formato básico: " T hhmissnzzzzz " (ex: T1920304 + 0100) formato estendido: " T hh : mi : ss , nzzzzzz " (ex: T19: 20: 30,4 + 01: 00)

Dia do ano

É possível representar as datas dando o ano e o número do dia no ano. Portanto, um número de 3 dígitos de '001' a '365' (ou mesmo '366' quando necessário). Exemplo: 1970-033 é o 33 º  dia do ano de 1970. Em outras palavras, o2 de fevereiro de 1970. Ou se o ano é um ano bissexto, por exemplo 2008-155 é o 155 º  dia do ano de 2008. Em outras palavras, o3 de junho de 2008. Esta notação é distinta graças aos 3 dígitos após o ano. (O mês sozinho levaria apenas dois dígitos. O mês e uma data exigiriam quatro dígitos em notação abreviada .)

Número da semana

Sistema de numeração

A indústria habituou-se a numerar as semanas do ano (semana 1, 2, ... 52 ou mesmo 53) para se organizar e planear a sua produção. Na prática, nem todos seguem necessariamente a mesma convenção de numeração (por exemplo, Canadá e Estados Unidos consideram domingo, em vez de segunda-feira , o primeiro dia da semana). Este padrão ISO definiu estritamente uma regra de numeração, reconhecida internacionalmente e comumente usada:

  1. a semana começa na segunda-feira;
  2. os dias de cada semana são numerados de 1 ( um ) para segunda-feira a 7 ( sete ) para domingo  ;
  3. a semana 1 é aquela que contém a primeira quinta-feira do ano.

Observações e consequências:

  • A semana 1 respeita a regra n ° 1, ou seja , não há semana parcial, portanto, pode começar já no ano anterior se a quinta-feira cair entre1 r janeiro e a 3 de janeiro incluído.
  • A semana 1 (segunda a domingo) é a primeira a conter a maioria dos dias (pelo menos 4 dias) do ano. Ele sistematicamente contém 4 de janeiro . É sempre contém o primeiro dia útil do ano, considerando que o 1 st de janeiro de sábados e domingos são observados. É também aquele cuja segunda-feira é mais próxima do dia de ano novo. Não começa antes de29 de dezembro ou o mais tardar em 4 de janeiro ;
  • A última semana do ano (52 ou 53) é aquela que contém a última quinta-feira do ano. É o último a ter a maior parte dos dias (pelo menos 4) no ano e contém sistematicamente o dia 28 de dezembro . É também aquele cujo domingo é mais próximo de 31 de dezembro. Ela termina não antes de28 de dezembro ou o mais tardar em 3 de janeiro ;
  • Não há semana zero (a semana 1 de um ano segue imediatamente a última semana do ano anterior);
  • Os primeiros dias da semana 1; pode estar localizado no final de dezembro do ano anterior. Da mesma forma, a última semana (52 ou 53) de um ano pode ter seus últimos dias logo no início do ano seguinte. Um ano sempre tem 52 ou 53 semanas no total;
  • Os anos normalmente têm 52 semanas (365 dias = 52 × 7 + 1). Então, se um ano tem sua 1 st 01 de janeiro segunda-feira a sua31 de dezembrotambém cai em uma segunda-feira (como uma terça-feira). Apenas os anos com uma quinta-feira de Ano Novo terão 53 semanas (quarta ou quinta-feira para anos bissextos).
Notação padronizada

A norma também prevê escrever uma data após a semana. Você deve começar com a letra W (para semana , semana em inglês) seguida pelo número da semana de dois dígitos (e possivelmente o número do dia de 1 a 7). Exemplos:

  • 2005-W52-1 corresponde ao primeiro dia (segunda-feira) da semana 52 do ano 2005, ou seja, a segunda-feira, 26 de dezembro de 2005 ou 2005-12-26 (as duas entradas são equivalentes).
  • 2005-W52-7 corresponde ao domingo da última semana de 2005, então o1 ° de janeiro de 2006 !
  • 2006-W01-1 corresponde a segunda-feira, 2 de janeiro de 2006 ou 2006-01-02 .
  • 2004W48 refere semana n o  48 de 2004.
Algoritmo de computador

O cálculo automatizado do número da semana na ciência da computação permanece simples, mas mesmo assim não é trivial, por causa das semanas cruciais entre cada ano. Esta reflexão, portanto, merece ser compartilhada.

Em muitas linguagens de programação de computador , as ferramentas contam os dias da semana a partir de domingo (valor zero ), então 1 para segunda-feira a 6 para sábado. Em muitas partes do mundo, a semana começa no domingo e, matematicamente (módulo 7), 0 e 7 são iguais nas provas. Para exibição, esse se torna um caso especial para tratar. Às vezes, há uma função que fornece diretamente uma numeração padronizada.

Para calcular o número ISO da semana que contém uma determinada data 'D', existem diferentes algoritmos. Isso pode ser, por exemplo:

  • calcule quinta-feira 'D' da mesma semana que a data 'D' pesquisada. (Esta quinta-feira está necessariamente localizada no ano da numeração correta, evitando tratar de casos especiais). Esta quinta-feira pode, portanto, cair no ano anterior ou seguinte; o número da semana ISO de 'D' é o mesmo de 'J'
  • calcular 'n' o número do dia de 'D' no ano; o número da semana é igual a 1 mais o resultado da divisão euclidiana de ('n'-1) por 7 (o número ISO da semana de' J 'e, portanto, de' D ', é o número de quintas-feiras anteriores entre início do ano em que 'J' e 'J' estão localizados).

Alguns algoritmos usam exceções mal justificáveis ​​ou até mesmo retornam valores errôneos para certas datas. A vantagem do algoritmo anterior é ser confiável, enquanto aproveita as funções geralmente disponíveis (a contagem de anos bissextos ou o número de dias já está implementada).

Se soubermos D o dia correspondente a uma data (de D = 1 para segunda-feira, a D = 7 para domingo), adaptando as funções existentes se necessário, então a quinta-feira da mesma semana está localizada (D-4) mais dias mais cedo (ou mais tarde, se negativo). A segunda-feira associada é (D-1) dias antes.

A notação abreviada

É possível indicar apenas os elementos úteis. Por exemplo, podemos indicar o mês de fevereiro de 2003 por: 2003-02 , sem ter que indicar um dia ou hora específica. Em geral, qualquer informação desnecessária pode ser removida (por exemplo, a data se apenas a hora for usada). O que dá por exemplo: T23: 45 .

Em qualquer contexto, as notações devem ser abreviadas da mesma maneira. Portanto, tudo com o mesmo número de caracteres. Tudo com as mesmas informações. Caso contrário, perdemos a vantagem dessa padronização para consistência e facilidade de classificação.

Outro exemplo, se o fuso horário for indicado, nem sempre é necessário indicar os minutos (muitas vezes desnecessário). Assim, T23: 05 + 05: 00 pode ser abreviado para T23: 05 + 05 ou mesmo T2305 + 05 de acordo com o que se segue.

Finalmente, se um tamanho compacto for necessário em detrimento da legibilidade, é possível remover alguns separadores (traço ou dois pontos). Em seguida, é aconselhável remover todos eles (todos os traços e / ou todos os dois pontos) para evitar confusão. Uma escrita fora de seu contexto deve permanecer compreensível e devemos, em particular, identificar se é uma hora ou uma data. (2005 é um ano, T2005 ou 20:05 são horas)

Por exemplo, essas notações são equivalentes:

20040204 = 2004-02-04 = 2004-W06-3 = 2004W063

Um atalho final é substituir os elementos truncados por um traço '-'. Raramente é usado. No entanto, pode ser necessário evitar confusão. Omitindo o ano, escreveríamos 2 de dezembro como:
" -1202 ". Poderíamos reduzi-lo para " -1202 " sem confusão com " 1202 " sozinho, que representaria o ano 1202.

2003 --- 12 ou 2003--12 representaria o dia 12 de qualquer mês em 2003, sem confusão com 2003-12, que representaria dezembro de 2003.

Tempos e intervalos

Também é possível indicar uma duração (medição de um tempo decorrido) ou um intervalo de tempo (entre duas datas precisas). Para fazer isso, usaremos a barra ' / ' como separador.

Intervalo entre duas datas

A barra separa a data de início e a data de término. Se apenas o último elemento mudar, é possível não reescrever o início. Alguns exemplos :

  • 2004-12-02T23: 00 / 2005-01-01T12: 30  : um período entre duas datas e horas diferentes;
  • 02-12-2004T22: 00/23: 30  : período entre 22h e 23h30 em2 de dezembro de 2004.
    2004-12-02T22: 00 / 2004-12-02T23: 30: notação equivalente não abreviada;
  • 02-12-2004T22: 00/15  : período entre 22h e 22h15 em2 de dezembro de 2004.
    2004-12-02T22: 00 / 2004-12-02T22: 15: notação equivalente não abreviada;
  • 2004-12-02T22 / 23  : período entre 22h00 e 23h00 em2 de dezembro de 2004.
    2004-12-02T22 / 2004-12-02T23: notação equivalente não abreviada;
  • 02-12-2004 / 05 : o período de tempo entre 2 e5 de dezembro de 2004 (entenda que as duas datas são dadas como limites de hora zero, portanto, o dia de 5 de dezembroé excluído).
    2004-12-02 / 2004-12-05: notação equivalente não abreviada;
  • T22: 00/15  : intervalo entre as 22h e as 22h15 (presume-se que a data seja conhecida no contexto).
    T22: 00 / T22: 15: notação equivalente não abreviada;
  • T22 / 23  : intervalo entre 22h00 e 23h00 (presume-se que a data seja conhecida no contexto).
    T22 / T23: notação equivalente não abreviada.
Duração

Uma duração representa uma quantidade de tempo em absoluto, sem começar em um momento preciso. Você deve começar a escrever com a letra P (para Período em inglês). Exemplo:

P18Y9M4DT11H9M8S que representa uma (longa) duração de 18 anos, 9 meses, 4 dias, 11 horas, 9 minutos e 8 segundos. Notamos, neste exemplo, o uso de iniciais inglesas para separar os elementos ( Y orelhas , M eses , D ays , H nosso , M inutos e S egundos ). Sempre notamos a presença do T separando os dias das horas. Isso torna possível resolver a ambigüidade entre P1M (1 mês) e PT1M (um minuto). Também poderíamos contar em semanas reutilizando a letra 'W': P3W representa por exemplo uma duração de 3 semanas.

Se o contexto for necessário para distinguir durações positivas ou negativas, basta adicionar o sinal '+' ou '-' no início da entrada.

A conversão de uma representação de duração para outra depende do contexto de aplicação dessa duração. A norma dá como definição [2.2.14] do ano "duração de 365 ou 366 dias corridos dependendo do início e / ou fim do intervalo de tempo correspondente no ano calendário específico". A definição [2.2.16] de um ano comum é " ano civil ... que tem 365 dias" e a definição [2.2.17] de ano bissexto é " ano civil ... que tem 366 dias". O mesmo se aplica à duração do mês , cuja definição [2.2.12] é " duração de 28, 29, 30 ou 31 dias de calendário dependendo do início e / ou fim do intervalo de tempo correspondente. No calendário específico mês.

Exemplos:

  • o tempo entre 1 ° de maio de 1985 às 10h e o 16 de junho de 1985às 21h está escrito P1M15DT11H (1 mês, 15 dias e 11 horas)
  • o tempo entre 30 de junho de 1985 às 23h e o 1 r jul 1985a 01 hora é escrito PT2H1S (2:00 e 1 segundo) como um segundo bissexto foi introduzido entre o30 de junho e a 1 r jul 1985.

O tempo entre 1 ° de janeiro de 2015 às 10h e o 16 de janeiro de 2016às 21h poderia ser escrito P12M15DT11H (12 meses, 15 dias e 11 horas), nada na norma proíbe, que apenas impõe que "os valores expressos não devem ultrapassar os pontos de relatório de 12 meses, 30 dias, 24 horas, 60 minutos e 60 segundos ". No entanto, se essa representação de duração deve ser trocada entre sistemas de computador, o valor P1Y5DT11H deve ser preferido a P12M5DT11H , o que poderia aparecer em erro em programas onde controles mais drásticos do que o que o padrão impõe teriam sido codificados.

Um terminal e a duração

Finalmente, podemos combinar as duas notações e indicar um período de acordo com sua data de início e sua duração. Exemplo:

2004-12-02 / P3D sendo o intervalo de tempo de uma duração de 3 dias a partir de 2 de dezembro de 2004.

Ou, ao contrário, podemos primeiro indicar a duração e depois a data final ('PT1H / 2006-01-01' representa a hora anterior à mudança para o dia de Ano Novo em 2006).

Recorrência de uma duração

Se a duração é repetitivo, uma acima da notação com a letra R . Exemplo: R / PT01H significa “a cada hora”.

A barra '/' permite uma adição após o R para indicar (opcionalmente) um número de repetições. R5 / PT01: 30 significa, portanto, “cinco ocorrências, com intervalo de uma hora e meia”.

A duração entre cada ocorrência pode ser indicada por todos os métodos mencionados acima. (Ao indicar duas datas ou ao usar o símbolo P para intervalos ou durações; com ou sem indicar uma data de início ou de término.)

R12 / 1985-04-12T23: 20: 50 / P1Y2M significaria "12 ocorrências separadas umas das outras por um ano e dois meses, começando a primeira em 12 de abril de 1985 às 23h20 e cinquenta segundos"

Benefícios

As vantagens dessa padronização são as seguintes:

  • Fácil de ler e escrever por software (sem nome para traduzir);
  • Fácil de comparar e classificar (mantendo um formato fixo em um determinado contexto);
  • Independente da linguagem;
  • Nenhum (ou pouco) risco de confusão com outras classificações;
  • A avaliação é pequena e de tamanho constante;
  • Compreensão intuitiva dos elementos de notação de data e hora.

Apêndices

Artigos relacionados

Notas e referências

Notas

  1. Na verdade, o formato "  aaaamm  " levaria à confusão com o formato reduzido de uma data "aammqq" que ainda é muito difundido (ex: 200110 pode referir-se a 10 de janeiro de 2020 ou outubro de 2001)

Referências

  1. "  ISO 8601 Representação de data e hora  " , na ISO (acessado em 4 de outubro de 2019 )
  2. (em) "  ISO 8601: 1988 Revisões  " (acessado em 31 de maio de 2014 )
  3. (in) "  Elementos de dados e formatos de intercâmbio - Intercâmbio de informações - Representação de datas e horas  " (acessado em 25 de junho de 2014 )
  4. AFNOR , NF EN 28601 junho 1993 cancelado
  5. "  Processos ISO / TC 154, elementos de informação e documentos em comércio, indústria e administração  " (acessado em 30 de junho de 2014 )
  6. Padrão ISO 8601: 2004 (E) , ISO - ISO 4.3.2 NOTA: Por acordo mútuo dos parceiros no intercâmbio de informações, o caractere [T] pode ser omitido em aplicações onde não há risco de confundir uma representação de data e hora do dia com outras definidas nesta Norma.
  7. Padrão ISO 8601: 2004 (E) , ISO - ISO 4.2.2.4… a fração decimal deve ser dividida da parte inteira pelo sinal decimal especificado na ISO 31-0, ou seja, a vírgula [,] ou ponto final [.]. Destes, a vírgula é o sinal preferido.
  8. ISO 8601: 2004 página 6 # 2.2.14 - ano: duração de 365 ou 366 dias corridos, dependendo do início e / ou do final do intervalo de tempo correspondente dentro do ano calendário específico - # 2.2.16 - ano comum - ano civil no calendário gregoriano que tem 365 dias corridos - # 2.2.17 - ano bissexto - ano civil no calendário gregoriano que tem 366 dias corridos
  9. ISO 8601: 2004 página 21 - # 4.4.3.3 Formato alternativo - Os valores expressos não devem exceder os “pontos de transição” de 12 meses, 30 dias, 24 horas, 60 minutos e 60 segundos.

links externos