2009-03-19 25 views
13

Estoy usando jQuery y necesito saber la hora local para Alemania.¿Cómo puedo obtener la hora local en jQuery?

Cualquier persona que visite mi sitio web desde cualquier país debería poder saber qué hora es en Alemania.

Si el tiempo es entre 0:00 y 12:00, necesito hacer una alerta que diga: "Buenos días".

Si es la hora entre las 12:00 y las 17:00, necesito hacer una alerta que diga: "Buenas tardes".

¿Cómo puedo implementar esto en jQuery?

+2

No confíe en la fecha/hora del lado del cliente. ¡No se puede garantizar la precisión! –

+0

Esto realmente no tiene nada que ver con jQuery. –

+3

¿Qué pasa con el hecho de que el cliente siempre tiene la razón? Por lo que el usuario está viendo, su tiempo es correcto (aunque puede ser incorrecto). Obtener el tiempo correcto de otro servidor mostrará al usuario el momento incorrecto desde su punto de vista. – sean

Respuesta

24

Usted puede obtener el desplazamiento del cliente para obtener la hora GMT y luego añadir las horas de corrección de la Alemania zona horaria zona horaria local (Central European Time 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."); 
} 

actualización : Estoy de acuerdo con @Josh, el código anterior depende completamente del cliente. Vamos a tratar de hacerlo mejor:

$(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); 
     } 
    }) 
}); 

Ahora estamos tomando ventaja de JSONP hacer peticiones entre dominios en el servidor jsontime, este servidor expone una API JSON completa para consultar información de hora y zona horaria.

Puede jugar con el código here y puede explorar la API JSONP here.

¡Hurra !, ¡no hay código de servidor!

+3

Lamento romper tu burbuja, amigo mío, pero esto es TOTALMENTE poco fiable. Esto depende del reloj del sistema del cliente, que podría configurarse como algo totalmente escandaloso. Usar el reloj del cliente me ha dañado las aplicaciones en el pasado. ¡Tiene que inyectar la fecha/hora del lado del servidor en el campo oculto! –

+0

De acuerdo, esto es completamente dependiente del cliente, publicará algo mejor ... – CMS

+8

¿No crees que esto es demasiado para algo que solo se usa para mostrar un saludo? no es una aplicación de control de lanzamiento de misiles, ya sabes. – nickf

6

¿Desea saber la hora en Alemania, o la hora de la zona horaria del usuario, estén donde estén? En este último caso, la función Date() está predeterminada para funcionar en la zona horaria local.

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

Necesita inyectar la fecha/hora de su servidor web en un campo oculto en la página, y luego puede acceder a eso con jQuery y cargar el objeto natural Javascript Date. Hace no desea confiar en la fecha/hora del lado del cliente porque está fuera de su control y podría establecerse en algo escandaloso. Créeme.

+0

Acabo de editar mi respuesta, saludos – CMS

+1

bien, dado el caso indicado en el OP, que es que se está utilizando para un simple saludo de "buenos días/tarde", esto es ridículo y excesivo la parte superior. – nickf

+5

nickf: 100% de seguridad de que TODOS los usuarios tendrán una experiencia similar NO es ridículo ni exagerado. En mi mundo, es absolutamente obligatorio. –

Cuestiones relacionadas