Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我怎样才能改变这个钟的速度_Javascript_Html - Fatal编程技术网

Javascript 我怎样才能改变这个钟的速度

Javascript 我怎样才能改变这个钟的速度,javascript,html,Javascript,Html,我有一个钟,它能记录当地时间。然而,我想改变,使6小时的实时等于24小时的时钟。因此,总而言之,时钟应该加快4倍 //此函数获取当前时间并将其注入DOM 函数updatelock(){ //获取当前时间 var now=新日期(); //从当前时间获取小时、分钟和秒 var hours=now.getHours(); var minutes=now.getMinutes(); var seconds=now.getSeconds(); //设置小时、分钟和秒的格式 如果(小时

我有一个钟,它能记录当地时间。然而,我想改变,使6小时的实时等于24小时的时钟。因此,总而言之,时钟应该加快4倍

//此函数获取当前时间并将其注入DOM
函数updatelock(){
//获取当前时间
var now=新日期();
//从当前时间获取小时、分钟和秒
var hours=now.getHours();
var minutes=now.getMinutes();
var seconds=now.getSeconds();
//设置小时、分钟和秒的格式
如果(小时<10){
小时数=“0”+小时数;
}
如果(分钟<10){
分钟=“0”+分钟;
}
如果(秒<10){
秒=“0”+秒;
}
//获取要将时钟注入的元素
var elem=document.getElementById('clock');
//将元素内部HTML值设置为时钟数据
elem.innerHTML=小时+':'+分钟;
}

这是每种语言中都很流行的问题:)。我相信你可以在谷歌上找到它,但是。。。以下是示例:

let mydate = new Date();
let mydate_millisec=mydate.getTime();

let offset = 4;

function clock() {
  next();
  setInterval("next()", 1000 / offset);
}
function next() {
  console.log(new Date(mydate_millisec).toString());

  mydate_millisec += 1000;
}
clock();

我添加了一个我为这类东西编写的类。 对于这个演示,我已经包含了秒数,所以您可以看到进度

/*
实时(可暂停)线性方程
值=_speed*Date.now()+_offset;/+暂停逻辑
所以基本上是一个时钟,一个秒表,一个倒计时,一个仪表。。。
由于它只是一个随时间变化的线性方程,它与任何时间间隔无关。
它会在您要求时计算值(使用Date.now())。这是每帧还是每小时。
*/
上课钟{
构造函数(值=Date.now(),速度=1){
//状态;仅在设置其中一个属性(值、暂停或速度)时更改
这是._offset=+值| | 0;
这个。|速度=+速度| | 0;
这个。_暂停=真;
//准备一个简单的钩子,以便在状态更新后得到通知(可能是将新状态存储在localStorage中)
this.onStateChange=未定义;
}
获取值(){
返回此。_暂停?此。_偏移量:此。_速度*日期。现在()+此。_偏移量
}
设置值(arg){
设值=+arg | | 0;
让偏移量=这个。_暂停?值:值-这个。_速度*日期。现在();
如果(此偏移量!==偏移量){
这个。_offset=offset;
if(this.onStateChange==“函数”的类型)
本次变更(本次);
}
}
获取速度(){
把这个还给我
}
设定速度(arg){
设速度=+arg | | 0;
如果(此速度!==速度){
如果(!this.\u暂停)
this.\u offset+=Date.now()*(this.\u speed-speed);
这个。_速度=速度;
if(this.onStateChange==“函数”的类型)
本次变更(本次);
}
}
暂停{
将此返回。\u已暂停
}
设置暂停(arg){
让暂停=!!arg;
如果(此项已暂停!==暂停){
这个。_offset+=(暂停?1:-1)*这个。_speed*Date.now();
这个。_暂停=暂停;
if(this.onStateChange==“函数”的类型)
本次变更(本次);
}
}
时间(){
设value=this.value,v=Math.abs(value);
返回{
价值
//符号:值<0?-:“”,
秒:数学地板(v/1e3)%60,
会议记录:数学地板(v/6e4)%60,
时间:数学楼层(v/36e5)%24,
天数:数学楼层(v/864e5)
}
}
价值(){
返回此.value;
}	
开始(){
this.pause=false;
归还这个;
}
停止(){
this.paused=true;
归还这个;
}
}
函数lz(v){//前导零
返回字符串(v).padStart(2,0);
}
函数更新(){
设{hours,minutes,seconds}=clock.time();
让节点=document.getElementById('clock');
node.textContent=[hours,minutes,seconds].map(lz).join(“:”);
requestAnimationFrame(更新);
//设置超时(更新,250);
}
让时钟=新时钟(Date.now(),4.start();
更新()

当页面加载并以4倍的速度从那里开始时,时间是否应该以正确的时间开始?@arbuthnott不,它不应该以正确的时间开始,它应该继续假时间并保持假时间。谢谢这很好,问题是这个时钟应该继续运行,而不是每次加载都从本地时间开始。。我该如何添加该函数?@Thea添加了一个示例,说明如何在时钟发生变化时将其状态存储在localStorage中。哦,很好,谢谢。我对本地存储非常陌生。我是否应该将其放置在新的脚本标记中?我必须更改/添加什么才能使其正常工作?
setInterval
setTimeout
的间隔不可靠。它们更像是一种重复:“一找到该函数就调用它,但至少需要xyz ms。”并且随着该时间间隔的增加,该过程更加不可靠。对于这个时钟来说,这可能已经足够好了,但一般来说,这不是一个好方法。