¿Es posible pasar un objeto de fecha como parámetro? Estaba intentando configurar otro intervalo establecido para actualizar el saludo para actualizaciones automáticas cuando noté que estaba usando mucho una nueva Fecha (). Traté de refactorizar un poco el código pero terminé rompiendo cosas. Mi nuevo código no reconoce la variable 'hoy' incluso para el primer selector donde estaba funcionando antes.
//Variables const today = new Date(); const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; //Selectors document.getElementById("day").innerHTML = weekday[today.getDay()]; document.getElementById("date").innerHTML = today.toLocaleDateString(); //Functions //Greeting based on local time function timeOfDay(today) { document.getElementById("greeting").innerHTML = today.getHours() < 12 ? "Good Morning" : today.getHours() >= 18 ? "Good Evening" : "Good Afternoon"; } setInterval(timeOfDay, 1000 * 60 * 60); //Get and display local time function getTime(today) { const currentTime = today.toLocaleTimeString(); document.getElementById("time").innerHTML = currentTime; } setInterval(getTime, 1);El siguiente código funcionaba bien. Solo estaba tratando de ver si había otra forma de hacerlo sin crear constantemente un nuevo objeto de fecha.
//Greeting based on local time document.getElementById("greeting").innerHTML = new Date().getHours() < 12 ? "Good Morning" : new Date().getHours() >= 18 ? "Good Evening" : "Good Afternoon"; //Get and display local time const today = new Date(); const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; document.getElementById("day").innerHTML = weekday[today.getDay()]; document.getElementById("date").innerHTML = today.toLocaleDateString(); function getTime() { const time = new Date(); const currentTime = time.toLocaleTimeString(); document.getElementById("time").innerHTML = currentTime; } setInterval(getTime, 1);Cualquier ayuda o consejo es apreciado.
El problema aquí es que cuando crea un nuevo objeto Date , su valor es la hora en que se creó. No cambia después de eso.
Afortunadamente hay una solución fácil.
No necesita crear un nuevo objeto Date cada vez, solo use el objeto en sí como una función.
var now = new Date(); setInterval(() => { console.log(`new Date(): ${now}`); console.log(`Date(): ${Date()}`); console.log(""); }, 1000)