GMT - Zeitzonen in Array verpacken

Mandarine16

Grünschnabel
Moin an Alle...

auf meiner Homepage gibt es immer ein Bild eines Landes und daneben die dort aktuelle Zeit. Bilder sind alle in einem Array und werden bei Drücken auf einen Button verändert (nächstes Bild wird angezeigt). Passt auch alles. Probleme habe ich bei der Zeit. Mit meinem Code kann ich die hier bei uns aktuelle Zeit ansehen und mit direktem "+6" auch die Zeit der Zone mit 6 Stunden entfernt. Aber jedes Land hat ja andere Stundenunterschiede, also müsste ich die Zeitunterschiede wieder in ein Array schreiben..Das dann aber mit der Stundenzeit zu verknüpfen krieg ich irgendwie nicht hin...Könnt ihr mit helfen?!

Javascript:
var g = 0;  
    var gmt = ["6", "2", "8", "-9"];
  
    var u = new Date();
    h = u.getHours() + 6;
    if (h > 24) h -= 24;
    n = u.getMinutes();
  
    if(h<10){h="0"+h;}
    if(h>10){+h;}
    if(n<10){n="0"+n;}
    if(n>10){+n;}

    zeit = h+':'+n;

so funktioniert es, dank "+6" was muss ich ändern, damit das Array gmt die jeweilige Zeitverschiebung übernimmt?
 
Zuletzt bearbeitet:
Leider schreibst Du nicht, wie Du den Index in dem Array mit den Bildern ermittelst. Übersichtlicher würde ich es finden, die Bilder und die Zeitdifferenz in ein Array zu schreiben:
Javascript:
var data = [
    {img: "img_plus_6.jpg", diff: 6},
    {img: "img_plus_2.jpg", diff: 2},
    {img: "img_plus_8.jpg", diff: 8},
    {img: "img_minus_9.jpg", diff: -9}
];

var idx = // hier musst Du den Index im Array bereit stellen
document.getElementById("dein-img-tag").src = data[idx].img;
var u = new Date();
h = u.getHours() + data[idx].diff;
if (h > 24) h -= 24;
if (h < 0) h += 24;
Ungetestet, weil mir das Drumherum fehlte, konnte ich keine Testseite erstellen.
PS: Ich nehme an, die Differenzen beziehen sich auf deine eigene Zeitzone. Dabei hast Du noch nicht berücksichtigt, was passiert, wenn ein Besucher in einer anderen Zeitzone ist.
 
Danke für die Antwort. Hatte es in verschiedene Arrays geschrieben, weil es nicht die einzigen Variablen sind. Mann kann die Tatsache mit den Bildern auch weglassen. Ausgespielt wird das ganze eh mit einer Funktion, die ansagt, dass der nächste Wert des jeweiligen Arrays genommen wird. Mir ging es in erster Linie, darum, die Zeitrechnung zu verstehen und hinzukriegen...Hab jetzt alles etwas umgebastelt:
Javascript:
  var u = new Date();

    h = u.getHours();
    n = u.getMinutes();
   
    if(h<10){h="0"+h;}
    if(h>10){+h;}
    if(n<10){n="0"+n;}
    if(n>10){+n;}

var z = 0;
  var neueZeit = new Array ();
  neueZeit[0] = zeit = h + parseInt(-5)+':'+n;
  neueZeit[1] = zeit = h + parseInt(12)+':'+n;
  neueZeit[2] = zeit = h + parseInt(2)+':'+n;

if (zeit > 24) h -= 24;
Nun habe ich das Problem, dass die if´s total "übersehen" werden. Ich habe bei "einstelligen" Zeiten, dann sowas wie "8:2 Uhr" anstatt 08:20 Uhr. Wieso? Auch zeigt er mir Zeiten, wie 25:23 Uhr an.

Wo ist mein Denkfehler? Das Zusammenrechnen der verschiedenen Zeiten klappt...nur mit unüblicher Anzeige der Zeit.
 
Nun habe ich das Problem, dass die if´s total "übersehen" werden.
Ich denke mal, die werden nicht übersehen, sondern in deinen späteren Berechnungen
Code:
neueZeit[0] = zeit = h + parseInt(-5)+':'+n;
wird der String implizit wieder in einen numerischen Wert umgewandelt, so dass die führende Null verloren geht. Abhilfe indem Du die führende Null ganz am Schluss hinzu fügst.

Auch zeigt er mir Zeiten, wie 25:23 Uhr an.
Das kommt daher, dass Du den Überlauf bei der Variablen h berücksichtigst, nicht jedoch bei den Zeiten im Array. Du müsstest sogar einen Überlauf im Monat oder im Jahr berücksichtigen, daher wäre es am besten, wenn Du in Millisekunden rechnen würdest:
Code:
var u = new Date();
var ms = u.getTime();
var oneHour = 1000 * 60 * 60;
neueZeit[0] = new Date(ms - oneHour * 5);
 

Neue Beiträge

Zurück