Tengo un temporizador de cuenta regresiva que me gustaría mostrar exactamente la misma cantidad de horas y minutos restantes para cada usuario, independientemente de la zona horaria o la ubicación (los días no son importantes).
Supongo que necesito apuntar y generar UTC de alguna manera. ¿Tendré algún problema de horario de verano con esto? La hora de finalización real no es muy importante. Todo el mundo viendo el mismo tiempo restante es.
He investigado publicaciones similares aquí, pero tienen algunos años y no encontré respuestas. Con la esperanza de que haya una solución o un enfoque más nuevo disponible. Todos los lenguajes de programación considerados.
// Set the date we're counting down to var countDownDate = new Date("May 10, 2022 24:00:00").getTime(); // Update the count down every 1 second var x = setInterval(function() { // Get today's date and time var now = new Date().getTime(); // Find the distance between now and the count down date var distance = countDownDate - now; // Time calculations for days, hours, minutes and seconds var days = Math.floor(distance / (1000 * 60 * 60 * 24)); var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); var seconds = Math.floor((distance % (1000 * 60)) / 1000); // Output the result in an element with id="demo" document.getElementById("demo").innerHTML = days + "d " + hours + "h " + minutes + "m " + seconds + "s "; // If the count down is over, write some text if (distance < 0) { clearInterval(x); document.getElementById("demo").innerHTML = "EXPIRED"; } }, 1000); #demo { font: normal 20px arial } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="demo"></div>Parece Date.UTC() es lo que estás buscando. De los documentos :
El método Date.UTC() acepta parámetros similares al constructor
Date, pero los trata como UTC. Devuelve el número de milisegundos desde el 1 de enero de 1970, 00:00:00 UTC.
Entonces, en lugar de
var countDownDate = new Date("May 10, 2022 24:00:00").getTime();deberías poder hacer
var countDownDate = Date.UTC(2022, 4, 10, 24, 0, 0);(Pero tal vez ajuste las horas/día a UTC para que coincida con el tiempo específico que necesita)