개발자 도구 · Unix 타임스탬프 변환기
마이크로초 및 나노초 시대: 16 및 19 숫자 값 단축
· 작동 방식
타임스탬프 유닉스 시간 개발자 워크플로
일부 런타임은 마이크로초 또는 나노초 단위로 에포크를 생성하여 초 또는 밀리초 변환기가 직접 읽을 수 없는 16자리 또는 19자리 값을 제공합니다. 이 게시물에서는 해당 항목의 출처와 안전하게 단축하는 방법에 대해 설명합니다.
트레이스의 19자리 숫자 — 변환기에 붙여넣은 time.UnixNano 출력 및 의미 없는 결과
19자리 추적 필드는 나노초 시대가 될 수 있지만 이 변환기에 직접 붙여넣는 것은 해당 가설을 테스트하지 않습니다. ToolAcre는 초 또는 밀리초를 허용합니다. 범위 오류는 심지어 너무 큰 데이터베이스 숫자가 마이크로초 또는 나노초를 사용할 수 있음을 암시하여 사용자가 해석하기 전에 정규화하도록 지시합니다.
조사하는 동안 원본 텍스트를 유지하십시오. 이를 일반 JavaScript 숫자로 변환하면 나누기가 발생하기 전에 이미 낮은 순서의 숫자를 변경할 수 있습니다. 생산자의 스키마, 로깅 문 또는 데이터베이스 열 정의는 특히 Unix 시대가 전혀 아닌 카운터의 경우 시각적 길이보다 더 나은 증거입니다.
네 가지 일반적인 해상도(초, 밀리초, 마이크로초, 나노초)와 현재 날짜의 자릿수
초는 1초에 한 번, 밀리초는 1000배 더 빠르게, 마이크로초는 100만 배, 나노초는 10억 배 빨라집니다. 현재 날짜에는 십진수 10, 13, 16, 19자리로 표시되는 경우가 많습니다. "종종"이 중요합니다. 음수 기호, 초기 날짜 및 먼 범위는 숫자 전용 규칙을 위반합니다.
패널의 자동 임계값은 1011 크기에서 초와 밀리초만 구분합니다. 16자리 마이크로초 값은 해당 경계를 초과하며 밀리초로 처리되며 일반적으로 의도한 날짜를 1000배 초과합니다. 지원되지 않는 해상도를 경로명 중 하나로 줄인 후 유닛을 선택하세요.
4개의 해상도 레이블이 일반적이지만 자릿수만으로는 형식 계약이 아닙니다.
개요에는 여러 언어 API 및 스토리지 제품이 명시되어 있지만 이 도구의 소스 파일은 없습니다. 어떤 생산자가 필드를 내보냈는지 가정하는 대신 해당 문서를 검사하세요. `_us` 또는 `_ns`과 같은 접미사, 선언된 정밀도 또는 알려진 인접 이벤트는 소수점 너비가 불가능하다는 증거를 제공합니다.
또한 단조로운 기간과 에포크를 구별합니다. 고해상도 카운터는 프로세스 시작 또는 부팅 이후의 시간을 측정할 수 있으며 1970와 관련이 없습니다. 이러한 값을 나누면 달력 날짜가 아닌 더 작은 카운터가 생성됩니다. 결과를 Epoch 변환기로 가져오기 전에 단위와 원점을 모두 확인하세요.
추정 방사자 목록이 아닌 생산자의 해결 방법을 식별합니다.
마이크로초를 밀리초로 줄이려면 1,000 요소를 제거하세요. 나노초 동안 1,000,000을(를) 제거합니다. 정수 나누기는 밀리초 미만의 정밀도를 의도적으로 따로 설정합니다. 양수 값의 경우 잘림에는 선행 밀리초 카운트가 사용됩니다. 부정의 경우 문자열 분할에 동일한 의미가 있다고 가정하는 대신 생산자와 일치하는 반올림 규칙을 선택합니다.
정밀도가 중요한 경우 십진수 텍스트 또는 BigInt를 사용하여 작업을 수행합니다. 부동 소수점 나누기는 이미 반올림된 19자리 숫자에서 시작할 수 있습니다. 조사에 1밀리초 이내에 이벤트 순서가 필요한 경우 변환된 순간 옆에 버려진 나머지를 보존합니다. ToolAcre는 이러한 밀리초 미만의 차이를 표시할 수 없습니다.
작업 예: 1700000000123456789 — 밀리초 단위로 트리밍하고, 결과를 읽고, 별도로 설정한 밀리초 미만의 숫자를 기록합니다.
`1738577696123456789`을(를) 나노초로 표시합니다. 이를 십진수 텍스트로 처리하고 정수 산술을 사용하여 1,000,000로 나누고 나머지 456,789 나노초로 1,738,577,696,123 밀리초를 얻습니다. 밀리초 몫을 명시적으로 입력하세요. ISO 판독값은 `2025-02-03T10:14:56.123Z`입니다.
나머지는 노이즈가 아닙니다. 두 추적 이벤트는 밀리초 단위로 표시되는 값을 공유할 수 있지만 그 이하에서는 다릅니다. 주문을 위해 원시 값을 저장하고 인간 방향에 대해서만 축소된 출력을 사용합니다. 1,738,577,696,124로 반올림하면 표시된 순간이 다음 밀리초로 이동하고 소스가 잘못 표시됩니다.
문자열 나누기는 자릿수별로 검토할 수 있습니다. 제거된 소수점 이하 6자리는 나노초에서 밀리초까지의 단위와 정확히 일치하며, 손대지 않은 접두사는 달력을 나타내는 숫자로 유지됩니다.
실제 예: 19 자리 값을 텍스트로 유지하면서 밀리초로 줄입니다.
JavaScript의 정확한 정수 보장은 일반적인 19자리 에포크 값보다 훨씬 낮은 수준으로 끝납니다. ToolAcre의 파서는 결국 `Number`을 호출하므로 패널을 통해 원시 나노초 텍스트를 공급하면 모든 숫자를 보존할 수 없습니다. 지원되는 날짜 제한 및 단위 선택기는 숫자를 나노초 정수 컨테이너로 변환하지 않습니다.
축소를 위해 BigInt 또는 문자열 인식 전처리 경로를 사용한 다음 안전한 크기의 밀리초 결과를 전달합니다. 이 순서는 중요합니다. 먼저 구문 분석하고 두 번째로 나누면 유지하려는 숫자가 정확하게 손상될 수 있습니다. 성공적인 달력 렌더링은 하위 소스 값이 살아남았다는 것을 증명하지 않습니다.
여기서 다루지 않는 내용 — 분해능과 관련이 없는 시계 정확도: 나노초 타임스탬프는 여전히 초 단위로 틀릴 수 있습니다.
분해능은 표현이 값을 얼마나 세밀하게 구별할 수 있는지 알려줍니다. 시계가 물리적 시간에 얼마나 가까웠는지는 알려주지 않습니다. 나노초 필드는 부정확한 소스에서 파생될 수 있지만 초 필드는 잘 동기화될 수 있습니다. 변환기에는 클록 품질 측정 기능이 없으며 그러한 주장도 하지 않습니다.
마찬가지로, 추가 숫자는 측정된 정밀도가 아닌 정밀도로 채워질 수 있습니다. 사건 분석을 위해 동기화 증거를 사용하여 시계를 비교하고 원시 문서화 카운터를 사용하여 이벤트 순서를 비교합니다. 달력 변환은 가독성만 제공합니다. 긴 소수점 꼬리나 ISO에 표시된 3밀리초로부터 정확성을 추론하지 마십시오.
요점: 먼저 밀리초로 줄인 다음 변환합니다. Unix 타임스탬프 변환기가 명시된 단위로 단축된 값을 읽는 방법
변환하기 전에 지원되지 않는 해상도를 줄이고 원본을 보존하며 폐기된 나머지를 명시합니다. 그런 다음 ToolAcre는 계약에서 약속한 작업을 수행할 수 있습니다. 즉, 결과 초 또는 밀리초를 읽고 선택한 단위가 표시되는 UTC, 로컬 및 ISO 형식을 표시합니다.
정규화된 날짜가 여전히 의미가 없는 경우 숫자를 반복적으로 삭제하는 대신 원점을 다시 방문하세요. 부팅 이후의 카운터, 다른 시대 또는 문서화되지 않은 인코딩은 모든 규모에서 모두 잘못된 상태로 남아 있을 수 있습니다. 단위, 원점 및 정수 정밀도는 별도의 질문입니다. 사람이 읽을 수 있는 날짜를 신뢰하기 전에 세 가지 모두에 답하십시오.
자동 감지는 기본값일 뿐이므로 축소 후에 명시적 단위 선택기가 중요합니다. 밀리초를 선택하면 크기 휴리스틱을 사용하여 재발견하는 대신 전처리 결정을 기록합니다.