Mit Zeitzonen rechnen

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

  • Mit Zeitzonen rechnen

    Hi,

    ich entwickle eine Anwendung wo mitarbeiter nicht nur in deutschland damit arbeiten sondern auch in brasilien und japan usw... das heißt es gibt große zeitunterschiede.

    wie speichert man am besten eine solche zeitinformation in der datenbank richtig ab? und wie zeigt man dem japaner folglich die zeit an wenn ich hier deutschland einen auftrag oder was auch immer in der datenbank gespeichert habe.

    gruß
    yavuz
    blog | www.bogazci.com
    mm | www.micromanager.de

  • #2
    Weise jedem Benutzer eine Zeitzone zu oder lasse ihn selbst eine wählen. Alle Zeitangaben speicherst du in einer Zeit, z.b. GMT. Bei Ein- und Ausgaben rechnest du jeweils aus und in die Zeitzone des aktuellen Benutzers um.

    Kommentar


    • #3
      ok, ich weise also jedem Benutzer eine Zeitzone zu, das muss ja dann irgendwie o +12 - -12 irgendwas sein. Soweit so gut, aber wie speichere ich in einen "Basis-Format" ab? Das heißt ein Bezugsformat von wo aus ich rechne. Es gibt die Funktionen date(), gmdate() und mktime() aber welches ist das richtige für mich???

      Ich weiß das wenn ein User einen Datensatz anlegt, ich diesen in einem Ur-Format abspeichern muss. Weiß aber nicht wie es geht.

      Danach muss ich im Prinzip bei der Darstellung nur noch seine Zeitzone hinzurechnen und das wars. Das wird ja einfach sein.

      Kann mir jemand zu Punkt 2. "Ur-Format" helfen? Oder liege ich gänzlich falsch????

      gruß
      yavuz
      blog | www.bogazci.com
      mm | www.micromanager.de

      Kommentar


      • #4
        Schau dir mal dieses Forum an. Hier ists genauso.

        Zeiten werden in GMT gespeichert. (vorzugsweise ist das die Standard-Zeit des Servers)

        Ich weiß das wenn ein User einen Datensatz anlegt, ich diesen in einem Ur-Format abspeichern muss. Weiß aber nicht wie es geht.
        Was ist denn das für eine Frage? der server hat von natur aus die zeit gespeichert, oder du fragst sie explizit ab. Funktion hast du doch selbst schon genannt.
        string gmdate ( string Format [, int Timestamp] )
        Entspricht der date() Funktion, außer dass als Zeitangabe immer Greenwich Mean Time (GMT) zurück gegeben wird.

        Kommentar


        • #5
          so jetzt habe ich es glaube ich verstanden. datum wird mit gmdate() abgespeichert in der datenbank und beim auslesen wird es dann mit dem timezone offset des benutzers zusammengerechnet!

          aber irgendwo habe ich noch einen fehler:

          PHP-Code:
          function GetZoneTime($dbTimestamp$dbUsrTimeZone)
          {
              
          $dbTime mktime(date("H"$dbTimestamp), date("i"$dbTimestamp),
          date("s"$dbTimestamp), date("m"$dbTimestamp), date("d"$dbTimestamp), date("Y"$dbTimestamp));
              
          $diff substr($dbUsrTimeZone03) * 3600 substr($dbUsrTimeZone35) * 60;
              
          $NewTimeInSeconds $dbTime $diff;
              
          $NewTimeWithZone date("d.m.Y H:i:s"$NewTimeInSeconds);
              return 
          $NewTimeWithZone;

          und das ist was rein kommt:

          PHP-Code:
              $x date("d.m.Y H:i:s");
              echo 
          GetZoneTime($x, +0200); 
          anstatt das die funktion hingeht und der aktuellen zeit welche ich der funktion übergebe in dem oberen fall 2 stunden hinzu addiert, bekomme ich folgende ausgabe:

          01.01.1970 01:00:24

          und in mktime bzw. $dbTime steht 24 drin!?!? Irgendetwas stimmt das nicht. aber was? ich bin nun schon den ganzen tag an dieser funktion dran aber ich kriegs einfach nicht hin

          kann mir nochmal jemand helfen?

          PS: das datum brauche ich schon dabei, weil es ja sein das hier nacht ist und woanders noch dementsprechend der vortag

          gruß
          yavuz
          Zuletzt geändert von yonthebeach; 24.09.2006, 21:38.
          blog | www.bogazci.com
          mm | www.micromanager.de

          Kommentar


          • #6
            Ich habs mir grad nicht angesehen. Scheint schon auf den ersten Blick viel zu umständlich zu sein.

            Entweder direkt in der SQL-Abfrage berechnen a la DATE_ADD()

            Gerne aber auch im PHP mit strtotime(). Mehr net.

            Kommentar

            Lädt...
            X