2009-12-03 13 views
7

Tengo una aplicación web que muestra los sellos de fecha y hora en cada página, por ejemplo:Viendo fecha/hora en la zona horaria del usuario - en el lado del cliente

12 de diciembre de, 2009 18:00

Me gustaría detectar dinámicamente la zona horaria del usuario y modificar la visualización mediante JavaScript.

Así el usuario Nueva York vería:

12 de diciembre de, 2009 18:00

Mientras que el usuario vería California:

12 de diciembre de 2009 3 : 00 pm

¿Alguna sugerencia?

+2

http://prideparrot.com/blog/archive/2011/9/how_to_display_dates_and_times_in_clients_timezone – VJAI

Respuesta

2

Aquí es cómo usted podría hacerlo con la maravillosa "mejora progresiva":

salida de la fecha en la que desea que aparezca, pero asegúrese de especificar su zona horaria (utilizo GMT aquí, pero se puede usar UTC, etc.). A continuación, modifíquelo con la hora local de carga (Gestionado automáticamente por JavaScript si se proporciona la zona horaria original).

<div id="timestamp">December 12, 2009 6:00 pm GMT</div> 
<script type="text/javascript"> 
    var timestamp = document.getElementById('timestamp'), 
     t   = new Date(timestamp.innerHTML), 
     hours  = t.getHours(), 
     min  = t.getMinutes() + '', 
     pm  = false, 
     months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 

    if(hours > 11){ 
     hours = hours - 12; 
     pm = true; 
    } 

    if(hours == 0) hours = 12; 
    if(min.length == 1) min = '0' + min; 

    timestamp.innerHTML = months[t.getMonth()] + ' ' + t.getDate() + ', ' + t.getFullYear() + ' ' + hours + ':' + min + ' ' + (pm ? 'pm' : 'am'); 
</script> 
+0

Dudo que IE analice ese formato correctamente. – Bergi

+0

@Bergi - Def definitivamente funciona en IE8 + –

+0

No funciona en IE 11 –

6

Puede usar Date.getTimeZoneOffset() para obtener la compensación local de GMT.

var date = new Date(); 
var offset = date.getTimezoneOffset(); 

A partir de ahí es un SMOP. Usando el objeto Javascript Date puede llamar al date.toDateString para obtener una fecha legible por humanos. Si lo necesita del lado del servidor, haga que el Javascript envíe el desplazamiento a su servidor con un GET o POST.

Formatear la fecha es otra historia. Javascript no proporciona mucho integrado. Podrías hackearlo tú mismo, pero de esa manera mienten los errores y la locura. El formato de fecha es algo que cualquier buena biblioteca de Javascript debería proporcionar. Por ejemplo, JQuery tiene Datepicker.formatDate.

0

Estamos utilizando ExtJS biblioteca, que tiene funcionalidades con respecto a la fecha y hora que le puede ayudar mucho. Como cuestión de hecho, en mi Mozilla Firefox, muestra todas las fechas y horas de acuerdo con la zona horaria de los navegadores.

Cuestiones relacionadas