Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

107
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda