为什么 date.getHours()%12 以 1-12 格式为您提供时间?



我不明白为什么const hours = (date.getHours() + 11) % 12 +1;以 1-12 格式返回小时数?我将这段代码复制并粘贴到我的程序中,但没有解释。任何解释这一点的帮助都会有所帮助,谢谢。

这就是我到目前为止所拥有的...

const clockContainer = document.querySelector('.js-clock'),
clockTitle = clockContainer.querySelector('h1');
function getTime() {
const date = new Date(); //instantiate Date objet and set it to a constant variable
const seconds = date.getSeconds(); // Gets the date objects seconds value into a const
const minutes = date.getMinutes();
const hours = (date.getHours() + 11) % 12 +1;
// Ternary operator (conditional statement ? "if code block" : "else code block")
clockTitle.innerText = `${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}:${seconds < 10 ? `0${seconds}` : seconds}`;
}
// initialize application
function init() {
getTime();
setInterval(getTime, 1000); // runs getTime function every second to make the clock run
}
// call initialize function
init();

Modulus 运算符返回除法的余数。在这种情况下,回想一下你学习小数位之前的小学,简单地通过数数来除法,"a会进入b多少次?",然后留下一个你会忘记的余数。

例如,5两次进入 10,因此 10 除以 5 就是 2。同样,5 两次进入 12,但不是一路......您只剩下 2 个的余数。因此,12 除以 5 是 2,余数为 2。因此,12 % 5 是 2。

你可以把模运算(n % m(想象成问:"nm的最接近的倍数有多高?这就是我喜欢在自己的大脑中理解它的方式。


所以,当你有类似18 % 12的东西时,你会问,"12 会有多少次进入 18 次?回答,一次,但你不是在那之后...你追求剩下的东西。在这种情况下,6.

  • "18 比最接近的 12 倍数高出多?">
  • 12
  • 的最接近的倍数是 12(因为下一个最高是 24(,18 是 6 比 12。

考虑通读一下我链接的维基百科页面。

最新更新