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

249
Visualizações
La conversión de zona horaria de momento de Node.js no funciona como se esperaba

Así que esto es lo que debería hacer el siguiente código. Básicamente, estoy creando objetos que caducan a la medianoche de las diferentes zonas horarias. La forma en que creo que debería hacer esto es primero tomar la ubicación del usuario y encontrar la zona horaria correspondiente. A partir de ahí, tome la fecha actual en esa zona horaria y cree una cadena con formato de hora (marca de tiempo actual) para que caduque al final del día a las 11:59:59 p. m. Luego convierta esta hora a UTC (porque así es como funciona el servidor) y luego, obviamente, termino eliminando el objeto de mi base de datos cuando pasa el tiempo. Entonces, por ejemplo, estoy tratando de hacer que esto funcione en la zona horaria de Shanghái, pero obtengo un valor extraño y muy incorrecto para el momento UTC. Esto es lo que parece:

 let timezone = tzlookup(latitude, longitude); let currentDate = new Date() let localizedDateAndTime = moment.tz(currentDate, timezone).format('YYYY-MM-DD hh:mm:ss') let localizedDate = moment.tz(currentDate, timezone).format('YYYY-MM-DD') console.log("Timezone: " + timezone) console.log("Local Time: " + localizedDateAndTime) console.log("UTC Time: " + moment.tz(currentDate, 'UTC').format()) let date = ("0" + currentDate.getDate()).slice(-2); let month = ("0" + (currentDate.getMonth() + 1)).slice(-2); let year = currentDate.getFullYear(); let currentTimestamp = localizedDate + " " + 23 + ":" + 59 + ":" + 59 console.log("Localized timestamp: " + currentTimestamp) var localizedMoment = moment.tz(currentTimestamp, 'YYYY-MM-DD hh:mm:ss', timezone); var utcMoment = localizedMoment.utc() console.log("UTC Moment (when event expires in UTC): " + utcMoment.format('YYYY-MM-DD hh:mm:ss')) let timestamp = utcMoment.format('YYYY-MM-DD hh:mm:ss')

https://i.stack.imgur.com/deRbS.png

Así que supongo que no debería ser 03:59:59 para la hora, sino algo así como 15:59:59, ¿verdad? No estoy seguro de por qué se convierte a 03:59:59...

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Este es realmente un comentario extenso.

Tu código es demasiado complicado. Cada vez que crea que necesita realizar operaciones de fecha mediante la creación y el análisis de cadenas, debe reconsiderar lo que está haciendo. En este caso, puede simplemente crear una fecha, configurar la zona horaria, configurarla para el final del día y luego generar su marca de tiempo como UTC, por ejemplo

 let loc = 'Asia/Shanghai'; let currentDate = new Date() let localDate = moment.tz(currentDate, loc); localDate.endOf('day'); console.log(localDate.utc().format('YYYY-MM-DD HH:mm:ss')); // One statement: console.log( moment.tz(new Date(), loc) .endOf('day') .utc() .format('YYYY-MM-DD HH:mm:ss') );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.33/moment-timezone-with-data.min.js"></script>

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