¿Hay alguna manera de obtener el formato de hora basado en la zona horaria en JS? lo que quiero es algo así: getSpecificTimeFormat("America/New_York") devuelve "h:mm a" y getSpecificTimeFormat("Europe/Paris") devuelve "HH:mm" y así sucesivamente.
Esta función devuelve una cadena que contiene datos de formato para la fecha/hora actual, según la cadena de configuración regional proporcionada.
function getDateFormatString(locale) { const options = { hour: "numeric", minute: "numeric", second: "numeric", day: "numeric", month: "numeric", year: "numeric", }; const formatObj = new Intl.DateTimeFormat(locale, options).formatToParts( Date.now() ); return formatObj .map((obj) => { switch (obj.type) { case "hour": return "HH"; case "minute": return "MM"; case "second": return "SS"; case "day": return "DD"; case "month": return "MM"; case "year": return "YYYY"; default: return obj.value; } }) .join(""); } console.log(getDateFormatString("en-US")); //Expected Output: "MM/DD/YYYY, HH:MM:SS PM" console.log(getDateFormatString("ko-KR")); //Expected Output: "YYYY. MM. DD. 오후 HH:MM:SS"Edite las opciones para cambiar los datos extraídos del objeto de fecha y edite/agregue casos para acomodarlos.
Encuentre la documentación para DateTimeFormat aquí .
Adapté la función de un artículo en newbedev.com .
En mozilla.org hay instrucciones claras sobre cómo hacer esto usando la función .toLocaleTimeString().
Ejemplos tomados directamente del sitio web:
Puede encontrar la documentación aquí.
// Depending on timezone, your results will vary const event = new Date('August 19, 1975 23:15:30 GMT+00:00'); console.log(event.toLocaleTimeString('en-US')); // expected output: 1:15:30 AM console.log(event.toLocaleTimeString('it-IT')); // expected output: 01:15:30 console.log(event.toLocaleTimeString('ar-EG')); // expected output: ١٢:١٥:٣٠صobtener zona horaria
- new Date().getTimezoneOffset() / 60Obtener la hora en función de la zona horaria
const num=- new Date().getTimezoneOffset() / 60; const newDate=new Date(new Date().getTime()+num*60*60*1000).toISOString()