TypeScript中Date库的本地时区异常问题排查
问题原因及解决办法
核心问题:Node.js的Date模块仅在进程启动时读取一次TZ环境变量
你看到的process.env.TZ值是正确的,但如果这个变量是在Node.js进程启动之后才被自动设置的(比如代码运行过程中动态赋值),Date对象并不会感知到这个变化——因为Node.js在启动时就已经初始化了时区配置,后续修改process.env.TZ不会生效。验证与解决方式
直接在启动Node.js进程时显式传入TZ变量,比如:TZ=Asia/Calcutta node dist/你的编译后文件.js重新运行代码后,
new Date()的打印结果应该会显示GMT+0530(India Standard Time)。额外验证技巧
如果你直接打印new Date()时看到的是UTC格式字符串(带Z后缀),可能是控制台默认调用了toISOString()方法。可以手动调用toString()来确认时区显示:console.log(new Date().toString());这个方法会严格根据当前生效的时区格式化输出。
内容的提问来源于stack exchange,提问作者Kshitij Kulshrestha
相关产品推荐
相关产品推荐

