Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP: Kompliziertes Problem mit Datum

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP: Kompliziertes Problem mit Datum

    Hallo,

    ich habe ein schwieriges Problem.

    Bei der Umsetzung eines Online-Spiels hängen ich und noch ein paar derzeit an folgendem Problem:

    Eine Stunde in Echtzeit soll einem Tag im Spiel entsprechen. Das ganze über den timestamp zu machen ist ja nicht möglich, da dieser nur bis 2032 geht. Daher brauchen wir einen Weg den Timestamp jetzigen Timestamp in ein Format umzuwandeln, mit dem das besagte Problem lösbar wird.

    Ich hatte erst überlegt man sagt z.B. timestamp x = d.m.Y und addiert dann bei x+3600 einfach auf d.m.Y +1 aber das geht ja nicht.

    Hat jemand ne bessere Idee wie man sowas umsetzen kann?

    Würde mich über Tipps sehr freuen :=)

    Vielen Dank !

    Gruß

    Nico


  • #2
    Ich weiss jetzt nicht, ob ich dein Problem richtig verstehe, aber wie wäre es, wenn ihr irgendeinen Timestamp (dann wenn das Spiel halt starten soll) als Nullpunkt festsetzt und dann von diesem Nullpunkt aus immer ausrechnet, wieviele Tage seit dem Spielstart vergangen sind?
    Ich glaube kaum, dass du damit rechnest, dass das Spiel im Jahr 2032 noch im Einsatz sein wird....

    Ach und übrigens:
    1. funktioniert der Timestamp grundsätzlich ewig, da ja unser Zahlensystem gegen oben offen ist.
    2. könnte das Timestamp-Problem am 19. Januar 2083 und nicht 2032 auftreten.
    3. tritt das Problem nur auf, falls es dann noch irgendwelche Computer geben sollte, die den Timestamp mit 32bit kodiert (was heutzutage noch üblich ist), was sich meiner Meinung nach aber in nicht allzu weit entfernter Zeit auf 64bit ändern wird. Soweit ich informiert bin kann PHP noch keine 64bit Integer speichern, aber ich nehme an, dass es auch dafür bereits Hilfsklassen gibt.

    Kommentar


    • #3
      ok im Prinzip is das auch meine Idee gewesen. Aber wie mach ich das? Also ich habe jetzt sagen wir mal als Spielstart timestamp 1199574000 (06.01.2008 - 00:00:00). Jetzt haben wir beispielsweise den timestamp 1199657594 (06.01.2008 - 23:13:14).

      Das heißt es müssten im Spiel jetzt 23,24...Tage vergangen sein.
      Also Differenz der Timestamps: 83594 / 3600 = 23,2 Spieltage.

      Soweit bekomm ich das noch hin. Aber wie mach ich das jetzt, dass ich im Spiel das Startdatum + vergangene Spieltage mache und dann jetzt den 29.01.2007 ausgegeben bekomme?

      Kommentar


      • #4
        Da musst du dir wohl eine eigene Zeit-Funktion schreiben, die einen Timestamp übergeben bekommt, die Differenz zum Start-Timestamp berechnet, dann ausrechnet wieviele Tage das sind und dies dann mit dem Start-Datum verrechnet (Achtung Schaltjahre etc).

        Kommentar

        Lädt...
        X