mmofacts.com

Welches Datumsformat verwendet ihr Intern.

gepostet vor 19 Jahre, 1 Monat von Chojin
Hallo,

mich würde interessieren welches Format ihr benutzt um intern verschiedene Zeitpunkte in eurem Spiel zu berechnen.

Interessieren tu ich mich Hauptsächlich für Probleme und Vorteile zwischen:

UTS und ISO 8601

Was ich bisher herrausgefunden habe:
- UTS ist mit php leichter zu verarbeiten.
- ISO 8601 ist Humanreadable und kann in MySQL Querys gut und logisch über das DATE_SUB Statement verändert werden.

Mal schauen was hier für Antworten kommen.

reg4rds
chojin
gepostet vor 19 Jahre, 1 Monat von Fornax
Ich nehm
time()
Die Serverzeit nach 1.1.1970 um 1 Uhr.
Und die Serveruhr hat ME[S]Z (Mittel Euröpäische [Sommer] Zeit, jenachdem ob Sommer oder Winter)
gepostet vor 19 Jahre, 1 Monat von Störti
Ich nehm auch den Linux-Timestamp von 1970. Der verbraucht wenig Platz, da ein 4Bit-Integer ausreicht und kann auch einfach mit date() zu allem umgeformt werden.

natürlich kann man mit eine 11-stelligen Zahl recht wenig anfangen, wenn man die einfach so sieht, aber man kann diese halt viel besser anwenden, denn zieh mal eine Woche von "23:59:59 12-04-2003" (oder wie das Format auch immer aussieht) ab. Bei PHP musst du das immer nochmal in eine Zahl umwandeln. Da kann man auch gleich eine Zahl nehmen...
gepostet vor 19 Jahre, 1 Monat von TheUndeadable
> Der verbraucht wenig Platz, da ein 4Bit-Integer ausreicht und kann auch einfach mit date() zu allem umgeformt werden.

Na, dann mal Gratulation ;-) 16 Sekunden...

Ich persönlich nutze ebenfalls time() unter PHP, ansonsten hat jede gute Programmiersprache ein spezielles Datumsobjekt.
gepostet vor 19 Jahre, 1 Monat von Chojin
Störti: SQL Query schaut so aus (vereinfacht):

SELECT DATE_ADD('2003-04-12 23:59:59', -> INTERVAL 7 DAY);

-> '2003-04-19 23:59:59'
oder wenn du wie mit timestamps in Sekunden rechnest:
SELECT DATE_ADD('2003-04-12 23:59:59', -> INTERVAL 604800 SECOND);

-> '2003-04-19 23:59:59'
Btw: Intern werden die DATETIME felder sicher nicht als String abgespeicher und deshalb gibt es warscheinlich keinen unterschied im Platzverbrauch (was sowieso kein entscheidungs Argument für mich ist).

Die Frage ist auch welches Verfahren schneller umrechnet: PHP oder MySQL direkt.

reg4rds
chojin
gepostet vor 18 Jahre, 12 Monate von BuschnicK
Ich nutze ausschliesslich ISO 8601. Alle meine Zeitberechnungen passieren direkt in den mySQL queries - in PHP musste ich noch keine durchführen.

mfG,
Sören
gepostet vor 18 Jahre, 12 Monate von Kallisti
Alles ueber timestamps, der Einfachheit halber. Finde ich viel universeller einsetzbar. Vor allem ist es wunderbar simpel um gewisse Zeiteinheiten zu addieren/subtrahieren.

Die Frage ob in php oder in mysql ist wohl weniger
Performance als Synchronisation vereinfachen bei Trennung von Webserver und Datenbank. Ich habe zwar nur einen Server im Moment, wuerde das ganze aber moeglichst in der Datenbank regeln lassen. Gerade weil bei uns eben noch ein Daemon als Backend laeuft.

Wenn bei mangelnder Synchronisation (die ntpdate ja schon alle paar Stunden regeln sollte) etwas nicht stimmt, wird lediglich die Ausgabe im Browser ein wenig falsch, der Spielablauf bleibt jedoch richtig.

Die Performance wuerde mich jedoch trotzdem interessieren.
gepostet vor 18 Jahre, 12 Monate von Nuky
100%iger time() - fan.. damit lässt sich am einfachsten rechnen, man kann leicht alte news löschen etc...
gepostet vor 18 Jahre, 12 Monate von TheUndeadable
> 100%iger time() - fan.. damit lässt sich am einfachsten rechnen, man kann leicht alte news löschen etc...

Genauso leicht wie mit echten Datums-Datentypen.
gepostet vor 18 Jahre, 12 Monate von Crafty-Catcher
Ich habe auch immer time() benutzt - nur hatte ich "dauernt" 'Probleme' mit Sommer und Winterzeit

(Hatte nie Einfluß auf die Serverzeit, weil hatte immer nur gewöhnlichen WebSpace)
gepostet vor 18 Jahre, 12 Monate von Freshman
ich benutze die localtime funktion in c++ ( UNIX Timestamp ) da mir Sekundengenauigkeit vollkommen ausreicht.

Die passt sich immer schön an GMT an...

Gerade erst ist es mir passiert, dass ich an der Sommerzeit hängen geblieben bin, aber dann schnell die Zeitumschaltung eingebaut, und dann gibt es keine Probleme mehr.
gepostet vor 18 Jahre, 12 Monate von knalli
Und das kann man mit DEM Datumsformat auch - nur ist es halt keine "Zahl"

Tatsache ist es aber wohl, das man mit reinen Integerzahlen schneller komplexe Differenzen ausrechnen kann, als mit einem Datums"objekt".

Andererseits hat man so auch einen notwendigen Überblick in den Tabellen.
gepostet vor 18 Jahre, 12 Monate von TheUndeadable
> Tatsache ist es aber wohl, das man mit reinen Integerzahlen schneller komplexe Differenzen ausrechnen kann, als mit einem Datums"objekt".

Naja, jede ordentliche Programmiersprache hat einen speziellen Datentyp für ein Datum:

DateTime time = iDatabaseReader.GetDateTime ( "spalte" );
int nHour = time.Hour;
int nMinutes = ( DateTime.Now - time ).Minutes;

usw.
gepostet vor 18 Jahre, 12 Monate von Nuky
da is mir ein time()-60*60*24 viel lieber
gepostet vor 18 Jahre, 12 Monate von Thomblin
Ich benutze auch time()
Was macht ihr denn um die Umstellung Sommerzeit <-> Winterzeit auszugleichen?
gepostet vor 18 Jahre, 12 Monate von Kampfhoernchen
Das Spiel während der Sommerzeit komplett abschalten

Ganz klar, ein Unix-Timestamp ist wohl das beste. Ich benutze den von MySQL, da 95% aller Timestamps, die ich brauch sowieso in der Datenbank gebraucht werden.
gepostet vor 18 Jahre, 12 Monate von friedenspanzer
Ich benutz auch time(). Damit kann ich einfach am besten umgehen.

Muss theoretisch nicht ausgeglichen werden. Ansonsten kann man ja irgendwie mit date() überprüfen ob Sommerzeit ist, dann kannst du ja eine Stunde draufrechnen (oder wars abziehen...ähh... ich denk lieber nicht drüber nach ^^)
gepostet vor 18 Jahre, 11 Monate von Tweety
Alles Unix-Timestamps. Liegt aber hauptsächlich daran, dass das Spiel ne eigene Zeitrechnung hat und ich dadurch dafür eigene Datumsfunktionen bauen musste. das geht dann doch am besten mit ner einfachen Integerzahl *g*
gepostet vor 18 Jahre, 11 Monate von Crafty-Catcher
Original von friedenspanzer
Ich benutz auch time(). Damit kann ich einfach am besten umgehen.


Wenn der Webspacebetreiber oder das OS die Uhr nicht auf SZ od. WZ umstellen muss man nix anpassen aber wenn die das doch tun, dann ist ja auch der Timestamp anders +/- 3600 sec

Original von friedenspanzer


Muss theoretisch nicht ausgeglichen werden. Ansonsten kann man ja irgendwie mit date() überprüfen ob Sommerzeit ist, dann kannst du ja eine Stunde draufrechnen (oder wars abziehen...ähh... ich denk lieber nicht drüber nach ^^)

Das könnte man - aber sowas vergißt man bis es das erste mal auftritt
gepostet vor 18 Jahre, 11 Monate von Kampfhoernchen
Das problem tritt ja primär bei Flottenbewegungen oder Bauaufträgen auf. Wird der Timestamp überhaupt verändert? Oder läuft dann nur die Umsetzung in date() anders?

Auf diese Diskussion antworten