Javascript getSeconds()和分钟翻转
Javascript getSeconds()和分钟翻转,javascript,Javascript,Date()如何处理滚动 假设您调用getMinute(),它返回10。调用getSecond(),它返回0。这是因为时间是第10分钟的0秒,还是因为在两次通话之间,时钟滚动到了新的一分钟,而不是第11分钟的0秒 在JS中有没有规定的方法来处理这个问题 如果不是,有没有比通常反复读取所有值直到匹配的技巧更好的解决方案 是因为时间是10分钟的0秒 对 …还是因为在两次通话之间,时钟滚动到了新的一分钟,而不是11分钟的第二个零点 编号:-) Date实例中的时间不会更改,除非您更改它。您可以安全地读
Date()
如何处理滚动
假设您调用getMinute()
,它返回10。调用getSecond()
,它返回0。这是因为时间是第10分钟的0秒,还是因为在两次通话之间,时钟滚动到了新的一分钟,而不是第11分钟的0秒
在JS中有没有规定的方法来处理这个问题
如果不是,有没有比通常反复读取所有值直到匹配的技巧更好的解决方案
是因为时间是10分钟的0秒
对
…还是因为在两次通话之间,时钟滚动到了新的一分钟,而不是11分钟的第二个零点
编号:-)
Date
实例中的时间不会更改,除非您更改它。您可以安全地读取小时、分钟、秒,并知道它们都与您创建或上次修改该日期实例时一样
当您创建一个Date
实例时,它会存储一个“时间值”,它是自1970年1月1日格林威治标准时间午夜起的毫秒数。(之前日期的Date
实例的时间值为负值,之后的实例的时间值为正值。)除非通过Date
的一种变异方法(setHours
等)更改时间值,否则该时间值永远不会更改
下面是一个活生生的例子,说明它在实际操作中不会发生变化:
//这将立即获取一个'Date'实例
设d=新日期();
//该日期实例存储“时间值”
log(d.valueOf()+“是”+d.toISOString());
//即使我们稍等片刻,我们仍然看到相同的值
设置超时(()=>{
log(d.valueOf()+“是”+d.toISOString());
}, 2000);
为了帮助您了解日期
对象的功能,请使其每秒刷新多次。并将所需的属性放置在输出字段中。我之所以添加它,是因为在许多情况下,getTime()
是最精确的时间引用,因为它包含毫秒。从这一点,你可以通过各种方式计算出分钟、小时或天
下面是一些在将来帮助您的示例:
const-element=document.getElementById('time-var-output');
常量snippetStartT=(新日期()).getTime();
常量echoTime=函数(){
变量日期=新日期();
var time=date.getTime();
element.value='getTime():'+time+“\n”;
element.value+=“seconds.ms:”+(时间/1000)+“\n”;
element.value+='秒:'+parseInt(时间/1000)+“\n”;
element.value+=“分钟:”+parseInt(time/1000/60)+“\n”;
element.value+='hours:'+parseInt(time/1000/60/60)+“\n”;
element.value+='天:'+parseInt(time/1000/60/60/24)+“\n”;
element.value+='启动后的秒数:'+parseInt((time snippetStartT)/1000)+“\n”;
element.value+='UTC日期:'+Date.toISOString().slice(0,19).替换('T','');
}
window.setInterval(echoTime,(1000/20))//每秒刷新20次
输出:
还是因为不支持闰秒,所有UTC函数都被破坏了?回答得很好,谢谢。看来转换成ISO格式也能正确处理闰秒。@user11567957-很高兴这有帮助!请注意,ISO内容只是显示所有字段的一种方便方式。不知道你说的“处理”闰秒是什么意思。JavaScript日期,并且没有任何关于尝试调整日期的内容(实际上它不能)。