You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NodeJS中实现终端控制台单行刷新显示的实时时钟

Node.js 终端单行刷新实时时钟实现方案

核心实现逻辑

  • 不要使用console.log输出,该方法默认会在内容末尾追加换行符,导致每次输出都新起一行
  • 使用Node.js内置的process.stdout.write()方法输出内容,该方法不会自动追加换行符
  • 输出时间字符串前追加回车符\r,可以将光标移动到当前行的行首,新输出的内容会直接覆盖原有行的内容,实现单行刷新效果

完整实现代码

function showTime() {
  const d = new Date();
  // 补零处理,Node.js >=8.10.0 支持padStart写法
  const h = String(d.getHours()).padStart(2, '0');
  const m = String(d.getMinutes()).padStart(2, '0');
  const s = String(d.getSeconds()).padStart(2, '0');
  // 开头加\r回到行首,末尾不加换行
  process.stdout.write(`\r${h}:${m}:${s}`);
}

// 首次调用立刻显示时间,避免第一秒空白
showTime();
// 每秒刷新一次
setInterval(showTime, 1000);

// 可选:监听Ctrl+C退出事件,退出前输出换行,避免终端提示符和时间内容粘连
process.on('SIGINT', () => {
  process.stdout.write('\n');
  process.exit();
});

如果使用低版本Node.js不支持padStart方法,可以替换补零逻辑:

const h = ("0" + d.getHours()).substr(-2);
const m = ("0" + d.getMinutes()).substr(-2);
const s = ("0" + d.getSeconds()).substr(-2);

内容的提问来源于stack exchange,提问作者Adam Satria Gunadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:15:07