You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

anticheatcraft

User / Kunde

  • "anticheatcraft" started this thread

Posts: 679

  • Send private message

1

Sunday, July 29th 2018, 10:47am

Systemzeit in Tage seit 1970 umwandeln

Hey!

Die Aufgabe ist eigentlich einfach, aber vielleicht doch schwieriger als gedacht.

Ich möchte eine Methode machen, welche die korrekte, aktuelle Systemzeit in Tagen seit der Einführung (Januar 1970) ausgibt.
Sprich heute ( 29.07.2018 ) um 12:00 müsste das dann genau 17741.5 sein. (17741,5 Tage seit dem 1. Janur 1970)

Die Ausgabe der formatieren, aktuellen Systemzeit berechnet ja alle Kalender-Eigenschaften mit ein, Schaltjahre, Sommerzeit, Zeitzohne, etc. genau das soll hier auch passieren, möglichst mit bereits vorhandener Logic aus den Klassen der Standart-Java-Bibliothek ( Date, Calendar , ? )

Jemand eine Idee ?

This post has been edited 4 times, last edit by "anticheatcraft" (Jul 29th 2018, 11:14am)


ChillUpX

User / Kunde

  • "ChillUpX" is male

Posts: 1,721

Occupation: FISI Azubi

Thanks: 21

  • Send private message

2

Sunday, July 29th 2018, 1:45pm

System.currentTimeMillies() -> Millisekunden
/1000 -> Sekunden
/60 -> Minuten
/60 -> Stunden
/24 -> Tage

Wo ist das Problem?

~CuX

anticheatcraft

User / Kunde

  • "anticheatcraft" started this thread

Posts: 679

  • Send private message

3

Sunday, July 29th 2018, 8:46pm

Quoted

Kalender-Eigenschaften mit ein, Schaltjahre, Sommerzeit, Zeitzohne

Das wäre ohne diese Dinge, und somit nicht genau. ^

ChillUpX

User / Kunde

  • "ChillUpX" is male

Posts: 1,721

Occupation: FISI Azubi

Thanks: 21

  • Send private message

4

Sunday, July 29th 2018, 9:44pm

Warum sollte das nicht genau sein? Das Ding zählt genau die Sekunden seit 1970, das heißt auch einen 29. Februar

Java source code

1
2
3
long days = System.currentTimeMillis() / 1000 / 60 / 60 ;

System.out.println(days / 24.0);


Der Code oben gibt mir 17741.791666666668 aus, das ist doch genau das was du willst, oder verstehe ich dich falsch?

anticheatcraft

User / Kunde

  • "anticheatcraft" started this thread

Posts: 679

  • Send private message

5

Sunday, July 29th 2018, 10:19pm

Das ist schon nahe dran, das stimmt. Aber ich glaube die System.currentTimeMillis() sind einfach nur die rohen MS - somit werden alle Besonderheiten des Kalender ignoriert ? Wie z.b. Sommer/Winterzeit , die Zeitzone, Verschiebungen, Schaltsekunden , etc.

Aber theoretisch müssten wir das ja nach prüfen können ?
Zu welcher Uhrzeit hat es dir 17741.791666666668 ausgegeben ?

sam_messen

User / Kunde

  • "sam_messen" is male

Posts: 199

Location: Schweiz

Occupation: Elektroniker

  • Send private message

6

Monday, July 30th 2018, 12:35am

Hi,
Also hier muss ich @ChillUpX zustimmen.
Wenn du dir mal überlegst das der Counter hede MS jedes Tages hochzählt bedeutet das, dass auch wenn der nächste Tag ein Schalttag ist oder was auch immer es zählt weiter auch an besagtem Tag. Somit gibt dir diese Methode die exakte Anzahl an Tagen zurück die seit dem 01.01.1970 vergangen sind.
Wenn du das wirklich noch irgendwie nachprüfen musst / willst:

Momentaner Unix Timestamp = 1532903461000
Datum / Zeit = 30.07.2018 00:29
=> Tage vergangen = 17741,938 Tage (in GMT)

Hilfreiche Seite: https://www.epochconverter.com/

EDIT:

Quoted


somit werden alle Besonderheiten des Kalender ignoriert ? Wie z.b. Sommer/Winterzeit , die Zeitzone, Verschiebungen, Schaltsekunden , etc.


Naja nicht wirklich, Schaltsekunden ect sollten mit verrechnet sein, ansonsten würden TimeStamps nicht mehr mit Daten übereinstimmen.
Zu den anderen Sachen:
- Sommer/Winterzeit: Ist nicht überall gebräuchlich (nur in Europa?) -> Wird also nicht mit Verrechnet, standart ist glaube ich Sommerzeit
- Die Zeitzone: Stimmt, soweit ich weiss wird jeder TimeStamp in GMT +0h gespeichert
- Verschiebungen: Siehe Zeitzonen

LG
Sam


do(); fail(); learn(); repeat();
Developer @ Iluminary Network


This post has been edited 2 times, last edit by "sam_messen" (Jul 30th 2018, 12:41am)


Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net