Português (Brasil)

Ferramentas para desenvolvedores · Conversor de carimbo de data/hora Unix

Épocas de microssegundos e nanossegundos: encurtando valores de dígitos 16 e 19

· Como funciona

carimbos de data/hora horário unix fluxo de trabalho do desenvolvedor

Um valor longo de nanossegundos estreitando de microssegundos a milissegundos
Ilustração vetorial original ToolAcre

Alguns tempos de execução emitem épocas em microssegundos ou nanossegundos, fornecendo valores de dezesseis ou dezenove dígitos que um conversor de segundos ou milissegundos não pode ler diretamente. Esta postagem explica de onde eles vêm e como encurtá-los com segurança.

Um número de dezenove dígitos em um rastreamento — saída time.UnixNano colada em um conversor e o resultado que não fazia sentido

Um campo de rastreamento de dezenove dígitos pode representar uma época de nanossegundos, mas colá-lo diretamente neste conversor não testa essa hipótese. ToolAcre aceita segundos ou milissegundos. Seu erro de intervalo sugere até que um número de banco de dados superdimensionado pode usar microssegundos ou nanossegundos, orientando o usuário a normalizar antes de interpretar.

Mantenha o texto original enquanto investiga. Convertê-lo para um número JavaScript comum já pode alterar dígitos de ordem inferior antes que qualquer divisão ocorra. O esquema do produtor, a instrução de registro ou a definição da coluna do banco de dados são uma evidência melhor do que o comprimento visual, especialmente para contadores que não são de épocas Unix.

As quatro resoluções comuns – segundos, milissegundos, microssegundos e nanossegundos, com suas contagens de dígitos para datas atuais

Os segundos avançam uma vez por segundo, os milissegundos mil vezes mais rápido, os microssegundos um milhão de vezes e os nanossegundos um bilhão de vezes. Nas datas atuais, eles geralmente aparecem como dez, treze, dezesseis e dezenove dígitos decimais. “Frequentemente” é importante: sinais negativos, datas iniciais e intervalos distantes quebram a regra apenas de dígitos.

O limite automático do painel distingue apenas segundos de milissegundos na magnitude 10¹¹. Um valor de microssegundos de dezesseis dígitos excede esse limite e seria tratado como milissegundos, geralmente excedendo a data pretendida por um fator de mil. Selecione uma unidade somente após reduzir a resolução não suportada para um dos nomes de rota.

Quatro rótulos de resolução são comuns, mas a contagem de dígitos por si só não é um contrato de formato

O esboço nomeou várias APIs de linguagem e produtos de armazenamento, mas nenhum é um arquivo de origem para esta ferramenta. Em vez de presumir qual produtor emitiu um campo, inspecione sua documentação. Um sufixo como `_us` ou `_ns`, uma precisão declarada ou um evento adjacente conhecido fornece evidências de que a largura decimal não pode.

Distinga também uma época de uma duração monotônica. Um contador de alta resolução pode medir o tempo desde o início ou inicialização do processo e não ter relação com 1970. A divisão desse valor produz um contador menor, não uma data de calendário. Confirme a unidade e a origem antes de levar o resultado a um conversor de época.

Identifique a resolução do produtor, não uma lista de supostos emissores

Para reduzir microssegundos para milissegundos, remova um fator de 1,000; por nanossegundos, remova 1,000,000. A divisão inteira deixa deliberadamente de lado a precisão inferior a um milissegundo. Para um valor positivo, o truncamento utiliza a contagem inicial de milissegundos. Para negativos, escolha uma regra de arredondamento que corresponda ao produtor em vez de assumir que o fatiamento de string tem semântica idêntica.

Faça a operação com texto decimal ou BigInt quando a precisão for importante. A divisão de ponto flutuante pode começar a partir de um número já arredondado de dezenove dígitos. Preservar o restante descartado ao lado do instante convertido se uma investigação precisar de ordem de evento dentro de um milissegundo; ToolAcre não pode exibir essas distinções abaixo de milissegundos.

Exemplo resolvido: 1700000000123456789 – cortando para milissegundos, lendo o resultado e anotando os dígitos abaixo de milissegundos que você reservou

Considere `1738577696123456789` como nanossegundos. Trate-o como texto decimal, divida por 1,000,000 com aritmética inteira e obtenha 1,738,577,696,123 milissegundos com um restante de 456,789 nanossegundos. Insira explicitamente o quociente de milissegundos; sua leitura ISO é `2025-02-03T10:14:56.123Z`.

O restante não é ruído: dois eventos de rastreamento podem comcomcompartilhar aquele milissegundo exibido, embora diferindo abaixo dele. Armazene os valores brutos para pedido e use a saída reduzida apenas para orientação humana. Arredondar para 1,738,577,696,124 moveria o instante exibido para o próximo milissegundo e distorceria a fonte.

A divisão das strings pode ser revisada dígito por dígito: seis casas decimais removidas correspondem exatamente à escala de nanossegundos a milissegundos, enquanto o prefixo intocado permanece a contagem do calendário.

Exemplo resolvido: preserve um valor de 19 dígitos como texto enquanto o reduz para milissegundos

A garantia de número inteiro exato de JavaScript termina bem abaixo dos valores típicos de época de dezenove dígitos. O analisador de ToolAcre eventualmente chama `Number`, portanto, alimentar o texto bruto de nanossegundos através do painel não pode preservar todos os dígitos. Seu limite de data e seletor de unidade suportados não transformam Number em um contêiner inteiro de nanossegundos.

Use BigInt ou um caminho de pré-processamento com reconhecimento de string para a redução e, em seguida, passe o resultado em milissegundos dimensionado com segurança. Essa sequência é importante: analisar primeiro e dividir o segundo pode corromper precisamente os dígitos que você esperava reter. Uma renderização de calendário bem-sucedida não prova que o valor de origem de ordem inferior sobreviveu.

O que isso não cobre – a precisão do relógio, que não está relacionada à resolução: um carimbo de data/hora de nanossegundos ainda pode estar errado em segundos

A resolução informa com que precisão uma representação pode distinguir valores; não informa o quão próximo o relógio estava do tempo físico. Um campo de nanossegundos pode ser derivado de uma fonte imprecisa, enquanto um campo de segundos pode ser bem sincronizado. O conversor não mede a qualidade do relógio e não faz tal afirmação.

Da mesma forma, dígitos extras podem ter precisão preenchida em vez de precisão medida. Para análise de incidentes, compare relógios usando evidências de sincronização e compare a ordem dos eventos usando o contador bruto documentado. A conversão do calendário fornece apenas legibilidade. Não infira a precisão de uma cauda decimal longa ou de três milissegundos mostrados em ISO.

Conclusão: reduza primeiro para milissegundos e depois converta - e como o conversor de carimbo de data / hora Unix lê o valor abreviado com a unidade indicada

Reduza a resolução não suportada antes da conversão, preserve o original e declare o restante descartado. ToolAcre pode então fazer o que seu contrato promete: ler os segundos ou milissegundos resultantes e mostrar os formulários UTC, local e ISO com a unidade selecionada visível.

Se a data normalizada ainda não fizer sentido, revisite a origem em vez de excluir dígitos repetidamente. Um contador desde a inicialização, outra época ou uma codificação não documentada podem permanecer errados em todas as escalas. A precisão da unidade, origem e número inteiro são questões separadas; responda todos os três antes de confiar em uma data legível por humanos.

O seletor de unidade explícita é importante após a redução porque a detecção automática é apenas um padrão. A escolha de milissegundos registra a decisão de pré-processamento em vez de solicitar à heurística de magnitude para redescobri-la.