Habe ich einen Unix-timestamp, die ich brauche, um das einzelne Jahr, Monat, Tag, Stunde, minute und Sekunde-Werte aus. Ich war nie sehr gut in Mathematik Klasse, so war ich Frage mich, wenn Euch könnte mir helfen ein wenig 🙂
Habe ich alles selber machen (keine Zeit.h-Funktionen). Die Sprache ist C.
- Welche Sprache? Sie erlaubt die Verwendung von SDK libs?
- Frage ist tagged as C.
Disclaimer: Der folgende code berücksichtigt nicht Schaltjahre
oder Schaltsekunden[Unix-Zeit berücksichtigen nicht die Schaltsekunden. Sie sind überbewertet, sowieso. -Ed]. Auch ich habe nicht testen Sie es, so kann es zu bugs. Es tritt vielleicht Ihre Katze und beleidigen Ihre Mutter. Noch einen schönen Tag.Lassen Sie uns versuchen, ein wenig psuedocode (Python, wirklich):
Wenn ich gepatzt hat, bitte lasst es mich wissen. Dies zu tun, in C sollte nicht zu viel härter.
Sie wirklich nicht wollen, um diese von hand machen. Sie schreiben konnte, einige einfache code geht davon aus, dass die Jahre, Monate, Tage, Stunden, Minuten und Sekunden sind alle die gleichen Längen (12 Monate; 28, 30 oder 31 Tage; 24 Stunden; 60 Minuten; 60 Sekunden) und kommen mit der falschen Antwort.
Bekommen die richtige Antwort, die Sie haben zu handhaben Schaltjahre
und Schaltsekunden, und konvertieren Sie die lokalen Zeitzone (mit der rechten DST - Modus). (Es sei denn, Sie wählen, um nur die Anzeige in UTC-Zeit.)Schlage ich vor, dass Sie einen Blick auf den code der glibc und sehen, wie
strftime
funktioniert.Edit: UNIX-Zeit nicht den Sprung zweite.
Dieses format wird oft als ISO 8601, suchen und finden, die Ihnen helfen könnten, aus.
Sollten Sie getan haben, eine Suche - ich habe eine vollständige Antwort auf diese Frage hier nur den anderen Tag (für UTC, mindestens - um die Anpassung an andere Zeitzonen, einfach addieren oder subtrahieren Sie die Zeitzone offset in Sekunden von der unixtime, bevor Sie die Funktion aufrufen).
Müssen Sie nicht rechnen. Dieses kann leicht gehandhabt werden in C, wie diese,
Seit Ihr nicht genau ISO-Zeit, die Sie brauchen nur zu ändern, eine Zeile,