Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

102
Vistas
Convertir el tiempo a otra zona horaria JS

Estoy obteniendo data.value que es una hora en el formato: hh:mm a - por ejemplo, 12:30 am .

También sé:

  1. la zona horaria local del usuario ( userTimeZone )
  2. la zona horaria del lugar ( venueTimeZone )

Necesito convertir la hora seleccionada por el usuario ( data.value ) a la fecha correcta en la venueTimeZone del lugar. Por ejemplo, si el usuario está en Americas/New York y seleccionó la 1:30 p. m. del 20/05/2022, y el lugar está en Americas/Los Angeles , el valor que me interesa obtener es 20/05/2022 10:30AM .

Este es mi intento, sin embargo, la zona horaria en sí no cambia; creo que esto se debe a que cuando creo el userDateTime con el moment , no especifico un desplazamiento de tiempo, pero no estoy seguro de cómo obtener el desplazamiento de userTimeZone , mientras que Contabilización del horario de verano.

 const userTimeZone = _.get( Intl.DateTimeFormat().resolvedOptions(), ['timeZone'] ); const venueDateStr = new Date().toLocaleString('en-US', { timeZone: venueTimeZone, }); const Date = new Date(restaurantDateStr); const venueYear = venueDate.getFullYear(); const venueMonth = `0${venueDate.getMonth() + 1}`.slice(-2); const venueDateOfMonth = `0${venueDate.getDate()}`.slice(-2); const userDateTime = createDateAsUTC( moment( `${venueDateOfMonth}/${venueMonth}/${venueYear} ${data.value}`, 'DD/MM/YYYY hh:mm a' ).toDate() ).toLocaleString('en-US', { timeZone: venueTimeZone });

EDITAR: no tengo el desplazamiento de la ciudad, tengo el nombre de la zona horaria, por lo tanto, no puedo usar ninguna respuesta sugerida que se base en el desplazamiento de la ciudad.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Considere usar Luxon , el sucesor de Moment. (Consulte el estado del proyecto de Moment ).

 // Parse your input string using the user's local time zone // (this assumes the current local date) const local = luxon.DateTime.fromFormat('1:30 pm', 'h:mm a'); // Convert to the desired time zone const converted = local.setZone('America/Los_Angeles'); // Format the output as desired const formatted = converted.toFormat('dd/MM/yyyy h:mm a').toLowerCase(); console.log(formatted);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/2.4.0/luxon.min.js"></script>

También puede hacer esto sin una biblioteca, sin embargo, es posible que no todos los navegadores analicen la cadena de entrada, y su formato de salida también depende del navegador.

 // Get the current local date as a string const date = new Date().toLocaleDateString(); // Parse the date and time in the local time zone // Warning: This is non-standard and may fail in some environments const dt = new Date(date + ' 1:30 pm'); // Format the output, converting to the desired time zone const result = dt.toLocaleString(undefined, { timeZone: 'America/Los_Angeles' }); console.log(result);

Hay, por supuesto, formas manuales de analizar y dar formato a las fechas (usando expresiones regulares, etc.), pero dejaré que lo completen usted u otra persona.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda