Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeitzonen - Java / Menü / Plugin / was nun?

Einklappen

Neue Werbung 2019

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

  • Zeitzonen - Java / Menü / Plugin / was nun?

    Guten Abend,

    ich arbeite derzeit an den Uhrzeiten bzw Zeitzonen an einer Website.

    Dazu nutze ich AJAX wodurch im weiteren Verlauf eine SESSION erstellt wird. Da ich eine eigene Funktion für das Formatieren von jedem timestamp habe, kann ich in dieser Funktion die Session abfragen und die Zeit somit so anzeigen, dass diese bei jedem Besucher individuell angepasst wird.

    Warum Javascript?
    Klar, man könnte mit Auswahlmenüs arbeiten und die Werte in der Datenbank speichern, aber was passiert, wenn ein Nutzer NICHT angemeldet ist.. Nun könnte man aber auch meinen, was passiert, wenn Javascript deaktiviert ist

    JAVA
    Code:
    <script type="text/javascript">
        var now = new Date();
        var local_time = now.toLocaleString()
        var time_zone_offset = -now.getTimezoneOffset() /60;
        $.ajax({
            type: "POST",
            url: "meineblabladatei.php",
            data: {allowrequire: "allowedaccess",timezone: time_zone_offset},
            });
    </script>
    Timestamp Funktion
    PHP-Code:
    function get_timestamp_string($timestamp,$model)
    {
    $timestamp $timestamp+($_SESSION['user_timezone']-1)*3600;
    .. 
    wird im weiteren verlauf zu einem String .. 
    Sinn dahinter ist, die Zeitzone in der Datenbank zu speichern und diesen wert zu benutzen, wenn der Nutzer Angemeldet ist und die Session zu verwenden, wenn der Nutzer Abgemeldet ist.


    Problem
    Ändert man UTC-12 bis UTC+14 am Computer, funktioniert das ganze auch wie gedacht.
    Jedoch wenn man die Uhrzeit nun manuel ändert bzw mehr Optionen für eine genauere Anpassung der Uhrzeit am Endgerät hat, funktioniert das ganze logischerweise nicht.

    Frage:
    Kennt ihr eine Möglichkeit das ganze so zu ändern, dass die Uhrzeit sich nicht nur anhand der UTC ändern, sondern auch bei individueller Anpassung daran anpasst?
    Ich bin für jegliche Lösungsansätze offen(fertige Plugins, neue Ansätze), bin grad ziemlich überfordert.

  • #2
    Für doch bitte mal etwas aus was das ganze werden soll. Php hat eine DateTime Klasse, damit kann man in den allermeisten Fällen alles nötige machen.
    Wieso soll sich deine Zeitangabe an den Nutzer anpassen, wenn dieser die Zeit manuell verstellt?

    Anbei Java != Javascript.

    Kommentar


    • #3
      Für doch bitte mal etwas aus was das ganze werden soll.
      Alle Zeitwerte werden in der Datenbank mit time() gespeichert und über eine Funktion zu einem lesbaren String konvertiert. Jedoch handelt es sich dabei ja um die Serverzeit. (Deutschland)
      Das ganze funktioniert solange ein Nutzer da lebt, wo dessen Uhrzeit die gleiche Uhrzeit wie der Server hat. -> Deutschland

      Lebe ich nun in einem Land wo die Uhr 2 Stunden zurück geht und es 18:00 Uhr ist, werde ich mich wundern warum da eine Nachricht um 20:00 Uhr erstellt wurde.

      Nun möchte ich jedoch nicht die Werte IN der Datenbank verändern und zusätzlich Zeitzonen Informationen speichern, sondern lasse jeden Zeitstempel durch eine Funktion laufen, die die Uhrzeit je nach Benutzeruhrzeit darstellt.

      Kommentar


      • #4
        Alle Zeitwerte werden in der Datenbank mit time() gespeichert und über eine Funktion zu einem lesbaren String konvertiert.
        Datenbanken haben nicht grundlos Datentypen für Zeit und Datum.

        Ansonsten verstehe ich weiterhin nicht warum du dich an manuelle Zeitänderungen anpassen willst. Wer die Uhr auf seinem Engerät manuell verstellt wird sich darüber im Klaren sein, das die angezeigte Zeit falsch ist. Wie du mit Javascript die lokale Zeitzone ermittelst weißt du ja bereits, auch wenn mir nicht klar ist warum du das Vorzeichen vor dem Absenden umkehrst. Würde mich verwirren, wenn ich immer alles genau andersherum machen muss, als in der entsprechenden Dokumentation beschrieben.

        Kommentar


        • #5
          Zitat von ShadyTM Beitrag anzeigen

          Nun möchte ich jedoch nicht die Werte IN der Datenbank verändern und zusätzlich Zeitzonen Informationen speichern, sondern lasse jeden Zeitstempel durch eine Funktion laufen, die die Uhrzeit je nach Benutzeruhrzeit darstellt.
          Damit wirst du nicht glücklich fürchte ich. Lass dir die UTC-Zeit und die Zeitzone des Benutzers übermitteln und arbeite intern und in der DB nur mit UTC-Zeiten.
          Bei der Ausgabe von Zeiten kannst du bei Bedarf mit Hilfe der Zeitzone die Lokalzeit ausliefern.

          Kommentar


          • #6
            jspit Mache ich das nicht bereits wenn die Uhrzeit überall durch time() gespeichert wird und bei der Ausgabe die gespeicherte Zeitzone (UTC-12 / UTC+12) aus der Nutzertabelle entnommen wird?


            Was haltet ihr von der Möglichkeit, die Uhrzeit eines Benutzers via Javascript zu ermitteln, diese Uhrzeit an PHP zu übergeben um es anschließend zu einem timestamp zu konvertieren und die differenz zur Serverzeit zu ziehen? Da auf allen Endgeräten eine Winterzeit Umstellung automatisch geschieht, würde das bedeuten, dass das System durch diese Möglichkeit auch das umgeht!


            PS: Danke für eure Hilfe bisher :3

            Kommentar


            • #7
              Ich hab vermutlich noch nicht verstanden wo du die Probleme siehst.
              Die Serverzeit ist doch immer genauer als die PC-Zeit. Mein PC z.B. (Browserinfo)
              Serverzeit 09.11.2017 08:59:51
              PTB Atomuhr 09.11.2017 08:59:51
              PC-Zeit 09.11.2017 08:59:49
              Du möchtst doch nicht wirklich, wenn ein Nutzer seine PC-Zeit absichtlich verstellt diese falsche Zeit dann auch von dir angezeigt wird.
              Worüber man nachdenken kann ist, per Javascript sofern aktiviert sich den aktuellen Zeitzonenoffset liefern zu lassen und diesen abzugleichen.
              Wenn jedoch die Pufferbatterie des PC runter ist, kann der PC auch schon mal ein falsches Datum haben. Daher kann mann auch diesen Gedanken wohl fallen lassen,
              da dann auch ein falscher Zeitzonenoffset übermittelt wird.

              Edit: Mit den akt.PHP-Versionen gibt es mit DateTime (fast) keine Probleme mit der Sommer/Winterzeit mehr.

              Kommentar

              Lädt...
              X