2012-03-19 11 views
32

Sé cómo compensar la zona horaria, pero lo que necesito es la capacidad de detectar algo como "América/Nueva York". ¿Es eso posible desde JavaScript o es algo que voy a tener que personalizar en función del desplazamiento?¿Cómo puedo obtener el nombre de la zona horaria en JavaScript?

+2

Esta es una función que Jon Nylander escribió, tal vez ayuda https://bitbucket.org/pellepim/jstimezonedetect – HerrSerker

+0

Aquí hay una respuesta relacionada que podría ayudar: http://stackoverflow.com/a/19421672/1447034 – Douglas

+0

Posible duplicado de [Detectar abreviatura de zona horaria usando JavaScript] (http://stackoverflow.com/questions/1954397/detect-timezone-abbreviation-using-javascript) – jberryman

Respuesta

1

En javascript, el método Date.getTimezoneOffset() devuelve la compensación de zona horaria de UTC, en minutos, para la configuración regional actual.

var x = new Date(); 
var currentTimeZoneOffsetInHours = x.getTimezoneOffset()/60; 

Moment'timezone será una herramienta útil. http://momentjs.com/timezone/

convierte fechas entre zonas horarias

var newYork = moment.tz("2014-06-01 12:00", "America/New_York"); 
var losAngeles = newYork.clone().tz("America/Los_Angeles"); 
var london  = newYork.clone().tz("Europe/London"); 

newYork.format(); // 2014-06-01T12:00:00-04:00 
losAngeles.format(); // 2014-06-01T09:00:00-07:00 
london.format();  // 2014-06-01T17:00:00+01:00 
+1

No entendiste la que. – srsajid

+1

Las muestras de tu código no están relacionadas con la pregunta original.¿Cómo usarías esta biblioteca para devolver el nombre de la zona horaria actual del usuario? –

2

Prueba este código se refieren a here

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"> 
</script> 
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js"> 
</script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    var tz = jstz.determine(); // Determines the time zone of the browser client 
    var timezone = tz.name(); //'Asia/Kolhata' for Indian Time. 

    alert(timezone); 

</script> 
25

Los soportes Internationalization API que consiguen la zona horaria del usuario, y es supported en todos los navegadores actuales.

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)

Tenga en cuenta que en algunas versiones de navegadores más antiguos que soportan la API de internacionalización, la propiedad se establece en timeZoneundefined en lugar de cadena zona horaria del usuario. Lo mejor que puedo decir, al momento de escribir (julio de 2017) all current browsers except for IE11 devolverá la zona horaria del usuario como una cadena.

+1

Nunca pensé que era tan simple –

+1

¡impresionante, la primera que he visto que no usa el momento! Gracias – r0bb077

Cuestiones relacionadas