개발자 도구 · Unix 타임스탬프 변환기
모든 시대가 1970인 것은 아닙니다: NTP, Windows FILETIME, GPS 및 Excel 날짜
· 배경
타임스탬프 데이터 형식 디버깅
Unix의 1970 출처는 많은 것 중 하나일 뿐입니다. 이 게시물에서는 파일 및 프로토콜(1900, 1601, 1904, 1980, 2001)에서 만나게 될 시대를 조사하고 전혀 Unix 시간이 아닌 값을 인식하는 방법을 보여줍니다.
1900에 도착한 타임스탬프 — 어떤 단위 선택도 의미가 없는 네트워크 캡처 값
패킷 캡처의 숫자는 단위가 유일한 숨겨진 매개변수가 아니기 때문에 초와 밀리초 모두에서 의미 없는 결과를 생성할 수 있습니다. 에포크(Epoch)는 선택된 영점을 의미합니다. Unix는 1970를 사용하는 반면 다른 프로토콜은 다른 곳에서 계산될 수 있습니다. 크기를 조정해도 잘못된 원본을 복구할 수 없습니다.
두 ToolAcre 판독값이 알려진 이벤트 시간과 충돌하는 경우 토글을 중지합니다. 필드 이름, 생산자, 프로토콜 버전 및 문서화된 출처를 식별합니다. 그럴듯한 연도가 나타날 때까지 반복적으로 숫자를 자르면 조사가 우연의 일치로 전환됩니다.
합리적인 날짜가 나타나지만 주변 사건과 충돌하는 경우에도 동일한 진단이 적용됩니다. 타당성은 약한 검사입니다. 출처와 알려진 참조 사건이 더 강력합니다.
NTP 및 1900 — 32비트 분수를 사용하여 1900-01-01 이후 초 및 이로 인한 2036 롤오버
통합 문서는 NTP의 원본, 부분 레이아웃 및 롤오버 날짜를 제공했습니다. Unix 변환기에서는 구현되거나 테스트된 것이 없으므로 이 문서에서는 해당 세부 사항을 인증하지 않습니다. 네트워크 캡처는 발신자와 파서가 사용하는 프로토콜 문서에 따라 디코딩되어야 합니다.
Unix 초를 파생시킨 후에만 값이 이 도구에 입력되어야 합니다. 하나의 고정 너비 필드만으로는 식별할 수 없으므로 시대 또는 롤오버 컨텍스트를 유지하세요. 가정된 시대의 세련된 UTC 결과는 내부적으로는 일관성이 있고 외부적으로는 틀릴 수 있습니다.
프로토콜 필드는 전체 구성 요소와 소수 구성 요소를 분할할 수도 있습니다. 지정된 배율 없이 연결하거나 소수화하면 호환 디코더가 의도하지 않은 새 숫자가 생성됩니다.
NTP 변환 세부 정보 및 롤오버 동작에는 여기에 없는 소스 문서가 필요합니다.
마찬가지로 명명된 Windows 및 .NET 카운터는 허용되는 모드가 아닙니다. 저장소에는 원점이나 눈금 규모에 대한 상수가 없습니다. 개발자가 변환을 시도하기 전에 큰 소수 값은 JavaScript의 정확한 정수 범위를 초과할 수 있습니다.
플랫폼의 문서화된 정의에 기초한 정수 안전 라이브러리를 사용하고 원본을 텍스트 또는 와이드 정수로 보존한 다음 Unix 값을 내보냅니다. 부동 소수점에서 기억된 오프셋을 빼지 마십시오. 소스 해상도가 밀리초보다 미세한 경우 최저 수준의 정확성이 중요합니다.
왕복 테스트에는 0이 아닌 초 미만 숫자의 값이 포함되어야 합니다. 전체 초 고정물은 100-나노초 또는 밀리초 나머지가 올바르게 보존되었는지 여부를 노출할 수 없습니다.
FILETIME 및 .NET 정의는 ToolAcre에 의해 구현되지 않으며 메모리에서 어설션되지 않습니다.
스프레드시트 날짜는 통합 문서 날짜 시스템 설정에 따라 해석되는 숫자 계열이라는 다른 표현을 도입합니다. 통합 문서의 1900 특이하고 오래된 Mac 주장에는 스프레드시트 소스가 필요하며 여기에 설정되지 않습니다. ToolAcre는 통합 문서 메타데이터를 읽지 않습니다.
스프레드시트 인식 도구를 사용하여 파일을 검사하고, 구성된 날짜 시스템을 결정하고, 해당 라이브러리를 사용하여 소수일 정밀도를 보존합니다. 연재물을 Unix 초로 취급하면 일반적인 규모의 버그처럼 보이는 초기 1970 날짜가 생성될 수 있지만 실제 문제는 원점과 단위가 함께 있는 것입니다.
통합 문서 설정은 파일과 함께 이동할 수 있으므로 시각적으로 유사한 두 개의 연속물이 다른 원본을 사용할 수 있습니다. 변환은 해당 메타데이터를 사용할 수 있는 문서 경계에 속합니다.
스프레드시트 직렬 시스템 및 특이한 점에는 스프레드시트 관련 증거가 필요합니다.
개요에 명명된 GPS 및 Apple 관련 시대도 구현 외부에 있습니다. 그들의 관계에는 지속적인 원점 이동 이상의 규모 관례가 포함될 수 있습니다. 권위 있는 증거 없이는 현재 상쇄 또는 변환 공식이 여기에 게시되지 않습니다.
일반 진단은 여전히 전송됩니다: 생산자로부터 0, 틱 기간 및 도약 규칙을 식별합니다. 그런 다음 적절한 라이브러리로 변환하고 동일한 데이터 세트의 알려진 타임스탬프와 비교하여 확인합니다. 세 가지 독립적인 사실이 소수점 이하의 추측보다 안전합니다.
이러한 주의는 도약 규칙과 관련하여 특히 중요합니다. 하나의 규모와 날짜에 대해 작동하는 상수는 모든 시스템 쌍 간에 시간을 초월한 관계가 아닐 수도 있습니다.
GPS와 Apple epoch 관계에는 이 모듈 외부의 신뢰할 수 있는 소스가 필요합니다.
방어 가능한 작업 방법은 알려진 순간으로 시작됩니다. 예를 들어 ToolAcre의 확인된 `2025-02-03T10:23:00.000Z`는 1,738,578,180 Unix 초와 동일합니다. 문서화된 다른 시대의 경우 해당 시스템의 공식 원점을 사용하여 해당 값을 계산하고 정수 산술로 확장한 다음 동일한 정의를 사용하여 다시 변환합니다.
Unix ISO 문자열과의 왕복을 비교하고 파생 내용을 유지합니다. 이 문서에서는 의도적으로 읽지 않은 상수로 5세대 테이블을 채우지 않습니다. 이 방법은 모든 가정을 노출하고 실제로 데이터를 생성한 프로토콜이나 파일 형식에 대해 검토할 수 있습니다.
작동 방법: 확인되지 않은 상수를 게시하는 대신 문서화된 시대 전체에 걸쳐 하나의 순간을 도출합니다.
ToolAcre는 외국 시대를 자동으로 인식하거나 변환하지 않습니다. 단위 메뉴에는 구성의 Unix 정의에 따라 초와 밀리초가 표시됩니다. 자동 감지는 1011 크기의 규모 중에서만 선택합니다. 영점은 절대 변경되지 않습니다.
좁은 계약은 잘못된 확신을 방지합니다. 외부 카운트가 그럴듯한 Unix 날짜에 도달하는 경우 변환기는 출처가 잘못되었음을 경고할 수 없습니다. 산술 전에 출처를 입력해야 합니다. 수동 Runbook에 의존하기보다는 코드로 변환을 문서화하세요.
표시되는 자동 레이블은 초 또는 밀리초만 보고합니다. 원본에는 그러한 분기가 존재하지 않기 때문에 원본 감지가 발생했다는 증거로 인용해서는 안 됩니다.
요점: 어느 0부터 계산하는지 파악하고 Unix 타임스탬프 변환기가 Unix 초 또는 밀리초를 읽는다는 것을 어떻게 명확하게 알려 주는지 알아보세요.
어느 0부터 계산하는지, 1틱의 크기, 소스가 시간 척도를 처리하는 방법을 알아보세요. Unix 변환기는 1970 UTC 이후 해당 질문이 몇 초 또는 밀리초 후에 해결된 후에만 응답합니다. 하나의 정수로부터 의미를 추론할 수 없습니다.
타당하지 않은 이중 판독값을 계속해서 제수를 시도할 수 있는 권한이 아니라 원점을 조사하기 위한 신호로 사용하십시오. 소스 변환이 Unix 값을 생성하면 ToolAcre는 자체 가정을 가시적으로 유지하면서 유용하고 독립적인 UTC 및 로컬 온전성 검사를 제공합니다.
좋은 어댑터는 외부 유형의 이름을 지정하고 하나의 소스 변환을 수행하며 브랜드 Unix 값을 내보냅니다. 이러한 설계는 원시 카운터가 일반 날짜 생성자로 누출되는 것을 방지합니다.