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

Node.js中如何获取本地时间日期而非UTC时间生成YYYYMMDD格式串

问题原因
  • 第一种写法中toJSON()默认返回UTC时区的时间,如果你本地处于东八区等UTC偏移为正的时区,凌晨时段本地已进入当日,但UTC时间仍为前一天,就会出现结果比实际日期少1天的偏差。
  • 第二种写法中toLocaleDateString()的输出格式完全依赖运行环境的区域配置,不同语言、地区设置下输出的年/月/日顺序、分隔符都不固定,直接替换分隔符无法保证得到固定的YYYYMMDD格式。
可靠实现方案

最稳妥的方案是通过本地时间专属的日期取值方法,手动拆分年、月、日后拼接,完全不受时区、区域配置影响:

const now = new Date();
const year = now.getFullYear();
// 注意JS中月份从0开始计数,需要+1,不足两位时补前导零
const month = String(now.getMonth() + 1).padStart(2, '0');
// 日期不足两位时补前导零
const day = String(now.getDate()).padStart(2, '0');
const time = `${year}${month}${day}`;

这个写法的特点:

  • 用到的getFullYear()、getMonth()、getDate()方法均返回本地时区对应的时间值,不会出现UTC时差导致的日期错误
  • 手动控制补零和拼接顺序,无论运行环境的区域设置如何,最终都会固定输出20220629格式的8位日期字符串,完全适配图片文件名的生成需求。

如果需要兼容不支持padStart的极旧运行环境,可以用自定义补零逻辑实现:

// 数字补前导零工具函数
const addZero = (num) => num < 10 ? `0${num}` : num;
const now = new Date();
const time = `${now.getFullYear()}${addZero(now.getMonth() + 1)}${addZero(now.getDate())}`;

内容的提问来源于stack exchange,提问作者Rahmat Oktrifianto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:48:17