手动修改window系统时间后,js的Date为何有时候不能改变?

平时会用new Date来获取当前时间,为了测试有时候会把系统时间手动改掉,这时候发现手动修改时间之后,date对象并不是总是跟着系统时间变,在浏览器不重新打开的情况下,会出现一直为今天的情况

阅读 12k
3 个回答

这个问题。。。我以前也纠结过挺久的。
怎么说呢,你修改好时间并能读取到你修改的时间,前提就是,你触发的这个事件需要有“重新读取”时间的这个动作。
我试着简单说说看。

比如
window.onload=function()
{
var oDate=new Date();

document.onclick=function()
{
    alert(oDate)
}

}

比如这个例子,你打开窗口,在这个时间点你读取了系统时间。
然后你点击文档,alert出来了时间的量,但是这个时间的量是你打开窗口那个时候所获取的时间。
so,你要把var oDate放到onclick这个事件里去,每次点击文档,都会抽取一次系统时间
这样问题就解决啦。

new Date()是会变的,除非你事先把new Date()的值存进了变量,不然就是浏览器bug了。

new Date的话,应该会取系统时间,但是会有延迟,改完windows时间后,过段时间new Date才会变。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题