2009-03-19 10 views
13

Ich benutze jQuery und ich brauche die Ortszeit für Deutschland.Wie kann ich die lokale Zeit in jQuery erhalten?

Wer aus irgendeinem Land zu meiner Website kommt, sollte wissen können, wie spät es in Deutschland ist.

Wenn die Zeit zwischen 0:00 und 12:00 Uhr ist, muss ich eine Warnung lesen: "Guten Morgen".

Wenn die Zeit zwischen 12:00 und 17:00 Uhr ist, muss ich eine Warnung lesen: "Guten Nachmittag".

Wie kann ich dies in jQuery implementieren?

+2

Verlassen Sie sich nicht auf das clientseitige Datum/die Uhrzeit. Es kann nicht garantiert werden, genau! –

+0

Das hat wirklich nichts mit jQuery zu tun. –

+3

Was ist mit der Tatsache, dass der Kunde immer Recht hat? Soweit der Benutzer sieht, ist ihre Zeit korrekt (auch wenn sie falsch ist). Die richtige Zeit von einem anderen Server zu erhalten zeigt dem Benutzer die falsche Zeit von ihrem Standpunkt aus an. – sean

Antwort

24

Sie können die lokale Zeitzone des Client-Offset erhalten die GMT-Zeit zu erhalten und fügen Sie dann die Offset-Stunden der Deutschland Zeitzone (Mitteleuropäische Zeit GMT + 1):

function getDate(offset){ 
    var now = new Date(); 
    var hour = 60*60*1000; 
    var min = 60*1000; 
    return new Date(now.getTime() + (now.getTimezoneOffset() * min) + (offset * hour)); 
} 

//... 

var dateCET = getDate(1); // Central European Time is GMT +1 

if (dateCET.getHours() < 12) { 
    alert ("Good morning."); 
} else { 
    alert ("Good afternoon."); 
} 

-Update : Ich stimme @Josh zu, der obige Code ist vollständig mandantenabhängig. Lassen Sie uns versuchen, es besser zu machen:

$(document).ready(function(){ 
    var timezone = "Europe/Berlin"; 
    $.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?", 
    function(data){ 
     if (data.hour < 12) { 
     alert ("Good morning in "+timezone); 
     } else { 
     alert ("Good afternoon in "+timezone); 
     } 
    }) 
}); 

Wir werden jetzt die Vorteile von JSONP domänenübergreifenden Anforderungen an den jsontime Server zu tun, dieser Server stellt eine komplette JSON API Zeit und Zeitzoneninformationen abzufragen. Sie können mit dem Code here spielen und Sie können die JSONP API here erkunden.

Hurra !, kein serverseitiger Code!

+3

Sorry, platzen Sie Ihre Blase, mein Freund, aber das ist völlig unzuverlässig. Dies hängt von der Client-Systemuhr ab, die auf etwas völlig Ungeheuerliches eingestellt werden könnte. Die Verwendung der Client-Uhr hat in der Vergangenheit Apps für mich völlig durcheinander gebracht. Server-seitiges Datum/Uhrzeit in verstecktes Feld einfügen! –

+0

Zustimmen, das ist komplett Client-abhängig, wird etwas besser posten ... – CMS

+8

Sie denken nicht, dass dies ein bisschen viel für etwas ist, nur verwendet, um eine Begrüßung anzuzeigen? Es ist keine App für Raketenstartkontrolle, weißt du? – nickf

6

Möchten Sie die Zeit in Deutschland oder die Zeitzone des Benutzers erhalten, wo immer sie sich befinden? Wenn Letzteres gilt, arbeitet die Date()-Funktion standardmäßig in der lokalen Zeitzone.

var d = new Date(); // defaults to the current time in the current timezone 
if (d.getHours() < 12) { 
    alert ("Good morning."); 
} else { 
    alert ("Good afternoon."); 
} 
4

Sie müssen das Datum/die Uhrzeit von Ihrem Webserver in ein verstecktes Feld auf der Seite einfügen, und dann können Sie mit jQuery darauf zugreifen und das natürliche Objekt Javascript Date laden. Sie tun nicht wollen auf der Client-Seite Datum/Zeit verlassen, weil es außerhalb Ihrer Kontrolle ist und könnte etwas Unerhörtes eingestellt werden. Vertrau mir.

+0

Ich habe gerade meine Antwort bearbeitet, Prost – CMS

+1

ok, angesichts der Fall in der OP angegeben, das ist, dass es für eine einfache "Guten Morgen/Abend" -Gruß verwendet wird, das ist lächerlich und over- die Spitze. – nickf

+5

nickf: 100% Sicherheit, dass alle Benutzer eine ähnliche Erfahrung haben, ist weder lächerlich noch übertrieben. In meiner Welt ist es absolut obligatorisch. –

Verwandte Themen