页面上要显示「2026-10-30 14:05:33」这样的时间,很多人第一反应是 new Date() 直接塞进页面,结果出来一串英文加时区。js获取当前时间这件事,关键在格式化那一步。

先拿到 Date 对象

const d = new Date(); 拿到的是本机当前时间。取年月日时分秒分别用 getFullYear、getMonth、getDate、getHours、getMinutes、getSeconds。注意 getMonth 从 0 开始,1 月拿到的是 0,不加上 1 就差一个月,这个坑几乎人人都踩过。

补零别手写 if

用 String(n).padStart(2, '0') 把 9 补成 09,比一串 if 判断清爽。拼格式的代码大概是这样:

const p = n => String(n).padStart(2, '0');
const s = d.getFullYear() + '-' + p(d.getMonth() + 1) + '-' + p(d.getDate()) + ' ' + p(d.getHours()) + ':' + p(d.getMinutes()) + ':' + p(d.getSeconds());

要现成的就用 toLocaleString

d.toLocaleString('zh-CN', { hour12: false }) 能直接给出中文习惯的日期时间,第二个参数还能指定只要年月日或者只要时分。不同浏览器输出细节略有差异,要求严格格式时还是自己拼。

时间戳和时区这两个坑

只要毫秒数用 Date.now(),比 new Date().getTime() 短。toISOString() 输出的是 UTC 时间,比北京时间慢 8 小时,别直接展示给用户。服务器和浏览器时区不一致时,接口最好传时间戳,展示前再转本地时间。

写进项目里的建议。把格式化函数放在 utils 里,输入 Date 或时间戳都兼容,页面里只调一个方法。倒计时用 setInterval 加 Date.now() 差值计算,别每秒减一,页面切到后台再回来会越走越偏。

js获取当前时间就这几招:new Date() 取数据,padStart 补零,自己拼或者用 toLocaleString。做倒计时、日志、表单默认值都够用。