2016-04-14 5 views
2

Ich habe jetzt Zeitstempel, die in Mikrosekunden seit Mitternacht, 1. Januar, 0 AD nominal Gregorian, nach der Suche habe ich festgestellt, dass einige Leute diese "native Symbian Zeit" nennen ? Was auch immer es ist, ich weiß wirklich nicht, wie ich diese "native Symbian-Zeit" in Unix-Zeit (Zeit seit Epoch) umwandeln kann. Gibt es dafür eine Standardfunktion in C/C++?c/C++ - konvertieren zwischen Unix-Zeit und der "Gregorianischen Zeit"

Beispieldaten sind wie: 63626825878362695, 63626825878363759, 63626825878657652

+0

Wenn es hilft, ist diese Epoche die Zeit seit Mitternacht, 1. Januar 1970, so dass Sie die Anzahl der Sekunden zwischen dem aktuellen Zeitstempel und dem zum Erstellen der Epoche berechnen können. – CodeMouse92

+0

Eigentlich ist diese Frage ein Duplikat von http://stackoverflow.com/q/11979655/472647 – CodeMouse92

Antwort

1
  1. Sie werden 64-Bit-Arithmetik oder bignums müssen.
  2. Wenn my tool für mich mit solchen Fragen zu helfen ist richtig, gab es 62167132800 Sekunden zwischen dem 1. Januar 0000 (proleptische Gregorian) und dem 1. Januar 1970
  3. Unix Zeit Symbian zu konvertieren, fügen 62167132800 und vermehren sich durch 1000000.
  4. um Symbian Zeit zu Unix, dividieren durch 1000000 zu konvertieren und 62167132800.

Es sieht aus wie die drei Werte subtrahieren Sie gab (die alle innerhalb der gleichen Sekunde) sind von vor etwa 10 Tagen.

+0

eine andere gute Option ist es, [Wolfram] (http://www.wolframalpha.com/) zu verwenden, um die Anzahl von 'zu erhalten Sekunden zwischen 01/01/0000 und 01/01/1970 ". – ddz

+0

@LuizEduardoF. Huh. Ich habe Wolfram wie vorgeschlagen versucht und eine andere Antwort bekommen. Trotzdem habe ich meine überprüft, und ich bin mir ziemlich sicher, dass 62167132800 korrekt ist. Ich frage mich, was ist los? –

+1

Ich kenne den Grund nicht. Vielleicht habe ich die falsche Frage gestellt? Die Interpretation der Eingabe lautet: Sekunden von | Samstag, 1. Januar, 1. BC (1. Januar) bis Donnerstag, 1. Januar 1970, was 62167219200 ergibt. Der Unterschied zwischen 62167132800 (Ihre Antwort) und 62167219200 (Wolfram's Antwort) ist 24 Stunden oder 86400 Sekunden. – ddz

0

Year 0 AD existiert nicht wirklich ;-)

Sie sollten ICU - International Components for Unicode verwenden können, wie es in der Lage ist, am häufigsten Datum und Zeit-Umsätze zu handhaben. Werfen Sie einen Blick auf die Umwandlung Absatz auf der Universal Time Scale Seite - es zeigt, wie ICU verwendet wird, um zwischen verschiedenen Datum und Uhrzeit Formate zu konvertieren.