Entwicklertools · Unix-Zeitstempelkonverter
Nicht jede Epoche ist 1970: NTP, Windows FILETIME, GPS und Excel-Daten
· Hintergrund
Zeitstempel Datenformate Debugging
Der Unix-Ursprung 1970 ist nur einer von vielen. Dieser Beitrag untersucht die Epochen, denen Sie in Dateien und Protokollen begegnen (1900, 1601, 1904, 1980, 2001) und zeigt, wie Sie einen Wert erkennen, der nie Unix-Zeit war.
Der Zeitstempel, der in 1900 gelandet ist – ein Wert aus einer Netzwerkerfassung, den keine Einheitenauswahl sinnvoll machen konnte
Eine Zahl aus einer Paketerfassung kann sowohl unter Sekunden als auch unter Millisekunden Unsinn erzeugen, da die Einheit nicht der einzige versteckte Parameter ist. Epoche bedeutet einen gewählten Nullpunkt; Unix verwendet 1970, während ein anderes Protokoll möglicherweise von woanders aus zählt. Eine Neuskalierung kann den falschen Ursprung nicht reparieren.
Wenn beide ToolAcre-Messwerte mit der bekannten Ereigniszeit in Konflikt stehen, beenden Sie das Umschalten. Identifizieren Sie den Feldnamen, den Hersteller, die Protokollversion und den dokumentierten Ursprung. Das wiederholte Kürzen der Ziffern, bis ein plausibles Jahr erscheint, verwandelt die Untersuchung in einen Zufall.
Die gleiche Diagnose gilt, wenn ein sinnvolles Datum angezeigt wird, aber im Widerspruch zu umgebenden Ereignissen steht. Plausibilität ist eine schwache Prüfung; Herkunft und ein bekanntes Referenzereignis sind stärker.
NTP und 1900 – Sekunden seit 1900-01-01 mit einem 32-Bit-Anteil und dem damit verbundenen 2036-Rollover
Die Arbeitsmappe lieferte den NTP-Ursprung, das gebrochene Layout und das Rollover-Datum. Im Unix-Konverter ist keiner implementiert oder getestet, daher werden diese Besonderheiten in diesem Artikel nicht zertifiziert. Eine Netzwerkerfassung muss gemäß der vom Absender und Parser verwendeten Protokolldokumentation dekodiert werden.
Erst nach der Ableitung von Unix-Sekunden sollte der Wert in dieses Tool eingegeben werden. Behalten Sie den Ära- oder Rollover-Kontext bei, da ein Feld mit fester Breite ihn möglicherweise nicht allein identifiziert. Ein ausgefeiltes UTC-Ergebnis aus einer angenommenen Ära kann intern konsistent und äußerlich falsch sein.
Protokollfelder können auch ganze und gebrochene Komponenten aufteilen. Durch die Verkettung oder Dezimalisierung ohne den angegebenen Maßstab entsteht eine neue Zahl, die kein kompatibler Decoder beabsichtigt hat.
NTP-Konvertierungsdetails und Rollover-Verhalten erfordern eine Quelldokumentation, die hier nicht vorhanden ist
Ebenso sind die genannten Windows- und .NET-Zähler keine akzeptierten Modi. Das Repository enthält keine Konstanten für ihre Ursprünge oder Teilstrichskalen. Ihre großen Dezimalwerte können den genauen Ganzzahlbereich von JavaScript überschreiten, bevor ein Entwickler eine Konvertierung versucht.
Verwenden Sie eine ganzzahlsichere Bibliothek, die auf der dokumentierten Definition der Plattform basiert, bewahren Sie das Original als Text oder Wide Integer auf und geben Sie dann einen Unix-Wert aus. Subtrahieren Sie keinen gespeicherten Offset im Gleitkommawert. Genauigkeit im unteren Bereich ist wichtig, wenn die Quellauflösung kleiner als Millisekunden ist.
Ein Round-Trip-Test sollte einen Wert mit Subsekundenziffern ungleich Null enthalten. Ganzsekunden-Geräte können nicht offenlegen, ob der 100-Nanosekunden- oder Millisekunden-Rest korrekt erhalten wurde.
FILETIME- und .NET-Definitionen werden von ToolAcre nicht implementiert und nicht aus dem Speicher aktiviert
Tabellenkalkulationsdaten führen eine andere Darstellung ein: eine numerische Serie, die von den Datumssystemeinstellungen der Arbeitsmappe interpretiert wird. Die Eigenart 1900 der Arbeitsmappe und der ältere Mac-Anspruch erfordern Tabellenkalkulationsquellen und werden hier nicht festgelegt. ToolAcre liest keine Arbeitsmappen-Metadaten.
Untersuchen Sie die Datei mit tabellenkalkulationsfähigen Tools, bestimmen Sie das konfigurierte Datumssystem und bewahren Sie mithilfe dieser Bibliothek die Genauigkeit in Bruchteilen von Tagen. Die Behandlung einer Seriennummer als Unix-Sekunden kann zu einem frühen 1970-Datum führen, das wie ein gewöhnlicher Skalenfehler aussieht, während das eigentliche Problem in der Kombination von Ursprung und Einheit besteht.
Arbeitsmappeneinstellungen können mit einer Datei übertragen werden, sodass zwei optisch ähnliche Zeitschriften möglicherweise unterschiedliche Ursprünge haben. Die Konvertierung erfolgt an der Dokumentgrenze, an der diese Metadaten verfügbar sind.
Serielle Tabellenkalkulationssysteme und Eigenarten erfordern tabellenkalkulationsspezifische Nachweise
GPS- und Apple-bezogene Epochen, die in der Gliederung genannt werden, liegen ebenfalls außerhalb der Implementierung. Ihre Beziehungen können Skalenkonventionen beinhalten, die über eine konstante Ursprungsverschiebung hinausgehen. Ohne verbindliche Beweise wird hier keine aktuelle Offset- oder Umrechnungsformel veröffentlicht.
Die allgemeine Diagnose überträgt weiterhin: Identifizieren Sie Null, Tick-Dauer und Sprungkonvention vom Hersteller. Anschließend mit einer geeigneten Bibliothek konvertieren und anhand eines bekannten Zeitstempels aus demselben Datensatz überprüfen. Drei unabhängige Fakten sind sicherer als eine Schätzung der Dezimalbreite.
Diese Vorsicht ist besonders wichtig bei Sprungkonventionen. Eine Konstante, die für eine Skala und ein Datum funktioniert, stellt möglicherweise nicht eine zeitlose Beziehung zwischen jedem Systempaar dar.
GPS- und Apple-Epochenbeziehungen erfordern maßgebliche Quellen außerhalb dieses Moduls
Eine vertretbare Arbeitsmethode beginnt mit einem bekannten Zeitpunkt, zum Beispiel dem verifizierten `2025-02-03T10:23:00.000Z` von ToolAcre, der 1,738,578,180 Unix-Sekunden entspricht. Berechnen Sie für eine andere dokumentierte Epoche den Wert anhand des offiziellen Ursprungs und der Skalierung dieses Systems mit ganzzahliger Arithmetik und konvertieren Sie ihn dann mithilfe derselben Definition zurück.
Vergleichen Sie den Roundtrip mit dem Unix-ISO-String und behalten Sie die Ableitung bei. Dieser Artikel füllt absichtlich keine Fünf-Epochen-Tabelle mit Konstanten, die nicht gelesen wurden. Die Methode deckt alle Annahmen auf und kann anhand des Protokolls oder Dateiformats überprüft werden, das die Daten tatsächlich erzeugt hat.
Funktionierte Methode: Leiten Sie einen Zeitpunkt über dokumentierte Epochen hinweg ab, anstatt nicht verifizierte Konstanten zu veröffentlichen
ToolAcre erkennt oder konvertiert fremde Epochen nicht automatisch. Im Einheitenmenü werden Sekunden und Millisekunden angezeigt, beide gemäß der Unix-Definition in der Konfiguration. Die automatische Erkennung wählt nur zwischen diesen Skalen bei der Stärke 10¹¹; es ändert nie den Nullpunkt.
Dieser enge Vertrag verhindert falsches Vertrauen. Wenn eine fremde Zählung zufällig auf ein plausibles Unix-Datum fällt, kann der Konverter nicht warnen, dass die Herkunft falsch war. Die Provenienz muss vor der Arithmetik eingehen. Dokumentieren Sie die Transformation im Code, anstatt sich auf ein manuelles Runbook zu verlassen.
Die sichtbare automatische Beschriftung meldet nur Sekunden oder Millisekunden. Es sollte niemals als Beweis dafür angeführt werden, dass eine Ursprungserkennung stattgefunden hat, da in der Quelle kein solcher Zweig vorhanden ist.
Takeaway: Wissen Sie, von welcher Null aus Sie zählen – und wie der Unix-Zeitstempelkonverter Ihnen klar sagt, dass er Unix-Sekunden oder -Millisekunden liest
Wissen Sie, von welcher Null aus Sie zählen, wie groß ein Tick ist und wie die Quelle mit ihrer Zeitskala umgeht. Ein Unix-Konverter antwortet erst, nachdem diese Fragen seit 1970 UTC in Sekunden oder Millisekunden aufgelöst wurden. Es kann nicht aus einer ganzen Zahl auf die Semantik geschlossen werden.
Verwenden Sie unplausible Doppelablesungen als Signal zur Untersuchung des Ursprungs, nicht als Erlaubnis, weiterhin Teiler auszuprobieren. Sobald eine Quellkonvertierung einen Unix-Wert erzeugt, bietet ToolAcre eine nützliche unabhängige UTC- und lokale Plausibilitätsprüfung, während die eigene Annahme sichtbar bleibt.
Ein guter Adapter benennt den Fremdtyp, führt eine Quelltransformation durch und gibt einen gebrandeten Unix-Wert aus. Dieses Design verhindert, dass Rohzähler in generische Datumskonstruktoren eindringen.