Tengo una Fecha en formato UTC, y quiero obtener la hora y los minutos, pero en la zona horaria local en la que se ejecuta el navegador, y sin que yo especifique la zona horaria explícitamente, solo uso el valor predeterminado que usa el navegador. Sé que puedo obtener toda la hora de la fecha en la zona local como una cadena usando Date.toLocaleTimeString() o Date.toString() pero no quiero tener que analizar la hora y el minuto.
También puedo obtener la hora y los minutos numéricos de una fecha usando Date.getHours() y getMinutes(), pero esto no estará en la zona horaria local, ¿o sí? (irónicamente, mi zona horaria local es UTC, así que no estoy seguro de cómo probar)
Gracias
EDITAR: respondiendo a mi propia pregunta, ver más abajo
toLocalstring y luego convertiría la cadena en número.
function getNumericHourAndMinute() { const tz = Intl.DateTimeFormat().resolvedOptions().timeZone; const d = new Date().toLocaleString('en-US', { timeZone: tz, timeStyle: 'short', hour12: false }); const p = d.split(':'); return [Number(p[0]), Number(p[1])]; } console.log(getNumericHourAndMinute());Puede usar Date.prototype.getHours y Date.prototype.getMinutes para obtener las horas y los minutos de una fecha de cadena como: 2022-01-08 14:00:00.
Usa este código:
var d = new Date(/* A example date: '2022-01-08 14:00:00'*/); var h = d.getHours(); var m = d.getMinutes(); // Whit the example date you get in the console: 'Time: 14:00.' console.log('Time: '+ h + ' : ' + m + '.');Entonces, un objeto Date de Javascript aparentemente no está en una zona horaria como tal, es básicamente la cantidad de milisegundos desde la época de Unix según Date.now() https://developer.mozilla.org/en-US/docs/Web/ JavaScript/Referencia/Global_Objects/Fecha/ahora
De lo que no me di cuenta hasta que revisé los documentos ;-) fue que Date.getHours() devuelve el valor numérico de las horas según la hora local (es decir, la hora en la zona horaria del dispositivo que ejecuta el código) y no la hora UTC (que estaba tratando de evitar). https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getHours
Así que Date.hours() me da exactamente lo que quiero (si por alguna razón quisiera UTC, podría usar Date.getUTCHours() https://developer.mozilla.org/en-US/docs/Web/JavaScript/ Referencia/Global_Objects/Date/getUTCHours
Entonces puedo usar Date.getMinutes() para obtener el valor de los minutos de la Fecha y eso no se ve afectado por la zona horaria de todos modos, así que todo bien :)