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 |
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.
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
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:
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 UTCPara 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 .
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:
É 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 .)
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:
Observações e consequências:
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:
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:
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.
É 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 = 2004W063Um 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.
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 datasA 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 :
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 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çãoFinalmente, 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çãoSe 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"
As vantagens dessa padronização são as seguintes: