JavaScript: ¿Cómo convierto la hora de la fecha UTC en horas EST utilizando Javascript puro?

Cuando vi la pregunta, me dije: “No sé … pero sé cómo aprender”. Luego hice lo mismo que tengo que hacer para aprender o recordar algo sobre JS.

Ingrese la fecha.

La fecha es uno de los objetos más complicados en JS. Toneladas de negocios de monos aquí. Entonces, por ejemplo, los días son valores, mientras que los meses son índices. WTF?

fecha de nacimiento var = nueva fecha (1996, 4, 20);

es, de hecho, el 20 de mayo de 1996. Los meses comienzan desde 0 pero los días son valores normales y comienzan desde 1.

Así que tienes que tener un poco de cuidado al jugar con ellos.

OK, primero tenemos que encontrar la diferencia horaria con la hora UTC de finalización EST. Bueno, es -5 ¿verdad? JS no le dará las diferencias de zona horaria arbitrarias con UTC. Debe conocerlos o mantenerlos en un LUT si va a hacer una calculadora para zonas horarias.

Luego debe resolver la hora UTC de su hora local y simplemente ajustarla a 5 horas antes. ¿Es fácil verdad? También es tan fácil de hacer como se dijo. Me gusta esto;

var localTime = nueva fecha (); // obtenga su hora local
var utcTime = localTime.getUTCHours (); // encuentra las horas UTC
var estTime = new Date (); // crea un nuevo objeto de fecha para la hora EST
estTime.setHours (utcTime-5); // ajustarlo por horas EST.

Esto debería hacerlo. pero hay otra manera

var estTime = new Date (); // obtener la hora local que se calculará en EST
estTime.setHours (estTime.getHours () + estTime.getTimezoneOffset () / 60 – 5); // getTimezoneOffset regresa en minutos por lo tanto / 60

Espero que quede claro.

Bueno, profundicé un poco más en esto … Como dije, este objeto Fecha es complicado … Es una tontería que tengamos que saber las diferencias de zona horaria de antemano. Luego tengo otra forma de calcular el tiempo EST sin saber de antemano que EST está 5 horas por detrás de UTC. Así es como va;

var options = {timeZone: “America / New_York”}, // tienes que saber que Nueva York en EST
estTime = nueva fecha ();

console.log (“Fecha y hora en EST es:” + estTime.toLocaleString (“en-US”, opciones));

Funciona bien en Chrome, pero a pesar de haber leído todo esto desde la página Date.prototype.toLocaleString () de Mozilla Developer … ¡no pude hacerlo funcionar con Firefox …!?!

Javascript devuelve el tiempo de su máquina, pero si su máquina no ejecuta el tiempo EST, siempre puede realizar una solicitud de obtención para extraer datos de un sitio como http://www.timeapi.org/est/now

Tendría que tener una función para realizar una solicitud de obtención. Uso una función de una biblioteca que escribí en quinto grado, (se puede encontrar aquí). No tiene que usar la biblioteca, simplemente saque esa función, es muy simple. y sin derechos de autor

Por ejemplo, var est = Peanut.httpGet("http://www.timeapi.org/est/now"

var est_time = new Date(est)

Lo sentimos, no puede obtener una respuesta precisa con solo JS API. Simplemente no es posible, porque JS API solo le ofrece una compensación de GMT en el momento en que lo solicita.

¿Cómo vas a diferenciar entre:

  • Arizona (GMT-7 todo el tiempo)
  • California (GMT-7 en verano, GMT-8 en invierno)
  • Colorado (GMT-7 en invierno, GMT-6 en verano)

No puedes y JS API no puede ayudarte.

Para obtener una respuesta precisa, debe mezclar la geolocalización con un conocimiento de las transiciones DST.

¿Por qué no usas una biblioteca para eso?
Creo que lo intentas moment.js
http://momentjs.com/timezone/docs/

Usaría moment.js si realmente quieres comenzar desde cero y luego revisar ese código, ¡es increíble!

More Interesting

Estoy diseñando un menú de navegación. ¿Algún consejo o truco que lo haga increíble? ¡Gracias!

A menudo me pregunto cómo los programadores y los desarrolladores web full stack recuerdan todas estas cosas que tienen que aprender.

Quiero invertir los próximos 6 meses en aprender Ruby on Rails. ¿Cómo debería ser mi plan de estudio?

Tengo 15 años y quiero aprender desarrollo web. Tengo una comprensión básica de html, CSS, JavaScript, y estoy aprendiendo Rails. ¿Cuánto tiempo debería pasar antes de que sea un desarrollador en funcionamiento y qué debo aprender?

He visto a muchos programadores hablar sobre la próxima insignificancia que tendrá JavaScript en el futuro con respecto al desarrollo web. ¿Qué tan cierto es esto teniendo en cuenta las documentaciones, la comunidad y los marcos que tiene JavaScript?

Mi comprensión de cómo usar las API RESTful está jodida. ¿Qué tengo que hacer?

Deseo aprender diseño de interfaz de usuario HTML5 sensible e intuitivo. ¿Cómo puedo hacer eso usando internet como la única herramienta?

Estoy estudiando Mean Stack Framework, ¿es válido para mi carrera?

¿Debo aprender c ++ / c si quiero ser desarrollador web?

No estoy alcanzando ningún hito en el aprendizaje del desarrollo web. ¿Estoy en el camino equivocado?

No pude aprender nada en mis 4 años de proyecto de soporte en Infosys (debido a la gran carga de trabajo). Dejé de fumar hace 6 meses y aprendí PHP, HTML, CSS y planeo comenzar pronto. ¿Estoy siendo demasiado poco realista?

He creado un nuevo sitio web y quiero mostrarlo a todos los entusiastas de la tecnología, ¿cómo puedo hacerlo? No quiero gastar dinero en esta etapa.

¿Es necesario aprender Angular 2 o 4 y JavaScript para el desarrollo web?

Quiero construir un sitio usando JavaScript, React, Express y Node. ¿Debo usar PostgresQL?

¿Por qué me cuesta codificar cuando no están todos mis compañeros de clase?