Tengo un método que obtiene un parámetro como una cadena de tiempo "15:35". Esa hora está en UTC TimeZone. Pero quiero convertirlo a una zona horaria diferente (por ejemplo, América/Nueva_York o...).
Los ejemplos dicen que hay un paquete llamado "momento" que tiene un método "tz", pero lo verifiqué y no existe tal método en ese paquete. Además, no debo actualizar el paquete o instalar uno. ¿Cómo podría convertir el tiempo dado según la zona horaria dada sin analizar?
Ejemplo: Dado "18:35" en UTC -> Esperado 14:35 en América/Nueva_York
Le sugiero que use moment porque es muy fácil de usar en comparación con javascript/mecanografiado puro.
Puedes usar el siguiente método para hacerlo:
moment.tz.setDefault(String)En su caso, puede establecer la zona horaria en América/Nueva_York de la siguiente manera:
moment.tz.setDefault("America/New_York")Puede obtener más información en https://momentjs.com/timezone/docs/#/using-timezones/default-timezone/
Realmente no entiendo por qué no puedes instalar un paquete. Si puede usar moment.js (que recomendaría) y su cadena no es una cadena de fecha (como "2021-09-22T15: 35: 00Z"), podría resolverlo así:
function changeDatetimeByTimezone(datetime, timezone) { const parsedDateAsUtc = moment.utc() .startOf('day') .add(datetime.substring(0, 2), "hours") .add(datetime.substring(3, 5), "minutes"); return parsedDateAsUtc.clone().tz(timezone).format("hh:mm"); }y luego usarlo así:
const dateTimeNY = changeDatetimeByTimezone("15:35", "America/New_York"); // 11:35 const dateTimeBE = changeDatetimeByTimezone("15:35", "Europe/Berlin"); // 17:35Instale el paquete moment-timezone . Ayudará a convertir el tiempo. Consulte el siguiente enlace.
https://momentjs.com/timezone/
Cómo utilizar:
1. Importe los dos paquetes a continuación en la parte superior de su archivo de componentes.
import moment from "moment"; import 'moment-timezone';2.Convierta la hora de la siguiente manera.
var localTime = moment.utc('18:35', "HH:mm").tz('America/New_York').format("HH:mm"); console.log(localTime);