You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修改JavaScript代码实现网页刷新时间戳显示(而非实时每秒更新)

如何修改JavaScript代码实现网页刷新时间戳显示(而非实时每秒更新)

嘿,我来帮你搞定这个问题!

你现在的需求很清晰:原来的代码用setInterval每秒更新时间,但你的网页本身每10秒会自动刷新,完全没必要让时间实时跳——我们只需要在每次页面加载完成时,显示当前的时间(也就是这次刷新的时间戳),之后直到下一次刷新,这个时间保持不变就好。

解决方案:

只需要做两个关键调整:

  1. 删掉每秒调用的setInterval,只在页面加载时执行一次时间生成函数
  2. 确保输出的日期格式严格匹配你要的DD/MM/YYYY, HH:mm:ss样式

修改后的完整代码:

JavaScript部分:

<script>
function updateRefreshTime() {
  const now = new Date();
  // 手动构造你需要的日期格式:DD/MM/YYYY, HH:mm:ss
  const day = String(now.getDate()).padStart(2, '0');
  const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份是从0开始计数的,所以要+1
  const year = now.getFullYear();
  const hours = String(now.getHours()).padStart(2, '0');
  const minutes = String(now.getMinutes()).padStart(2, '0');
  const seconds = String(now.getSeconds()).padStart(2, '0');
  
  const refreshTime = `${day}/${month}/${year}, ${hours}:${minutes}:${seconds}`;
  document.querySelector('#datetime').textContent = refreshTime;
}

// 页面加载完成后只执行一次,不需要每秒更新
updateRefreshTime();
</script>

HTML显示部分(和你原来的一致):

<span id="datetime"></span>

为什么这样改?

  1. 去掉setInterval:你的网页已经通过<meta http-equiv="refresh" content="10">每10秒刷新一次,每次刷新都会重新执行这个函数,自动显示新的时间,完全不需要每秒更新。
  2. 手动构造日期格式:默认的toLocaleString在不同浏览器/系统上可能格式不一致,手动构造能确保严格输出你要的日/月/年, 时:分:秒格式,而且用padStart(2, '0')保证单个数字的日/月/时/分/秒会自动补0(比如5号变成05,9点变成09)。

可选简洁方案(用本地化API构造格式)

如果你更倾向于简洁的代码,也可以用浏览器的本地化API来生成格式:

<script>
function updateRefreshTime() {
  const now = new Date();
  // 指定英式本地化规则,强制得到日/月/年的日期格式和24小时制时间
  const datePart = now.toLocaleDateString('en-GB');
  const timePart = now.toLocaleTimeString('en-GB');
  const refreshTime = `${datePart}, ${timePart}`;
  document.querySelector('#datetime').textContent = refreshTime;
}

updateRefreshTime();
</script>

这个方法代码更短,但要注意指定en-GB来确保日期格式是日/月/年,避免系统默认格式的差异。

这样修改后,你的页面每10秒刷新时就会显示当时的时间,之后保持不变,完全符合你想要的效果!

备注:内容来源于stack exchange,提问作者Lensmeister

火山引擎 最新活动