在机器时间更改后立即更新Date()函数结果

update Date() function result immediately after machine time change

本文关键字:Date 更新 结果 函数 时间 机器      更新时间:2023-09-26

我在程序中使用javascript的Date()对象进行各种操作。然而,我注意到,每当机器上的时钟发生变化时,Date()返回的时间仍然等于更改前的时间,直到更改后一分钟,直到更改生效。

时间也是23:50:39,我手动将机器上的时间更改为23:59:50,并刷新了我仍然会看到的页面:23:50:51(时间进展了一点),而不是所需的时间。

有没有什么方法可以强制javascript每次执行new Date()时拉取新机器?

V8似乎保留了一个内部缓存,其中包含用于在启动时读取日期/时间计算的各种值(此处和此处的源代码)。这是为了避免每次需要构建JS-Date对象时都进行昂贵的系统调用。

也许由于某些原因,V8无法捕捉到重置那些缓存值的日期/时间更改通知。

我也注意到了这一点。在清除浏览器数据(CTRL-SHIFT-DEL,只检查图像和文件)后,日期将反映新的系统日期,因此看起来Chrome在浏览器启动时使用了从系统日期派生的内部日期/时间值。

除了这个实验性的API之外,我不知道还有什么方法可以通过编程清除浏览器缓存。