Node.js中如何让new Date()输出本地时区时间?
问题描述
var today = Date(); console.log(today); // Thu Aug 04 2022 15:28:52 GMT+0530 (India Standard Time) var today = new Date(); console.log(today); // 2022-08-04T09:58:52.640Z
我已在CentOS系统中将时区设置为Asia/Calcutta,Date()函数能正确显示本地时间(如示例中的Aug 04 2022 15:28:52),请问如何让Node.js脚本里的new Date()也输出同样格式的本地时间?
解决方法
方法1:调用toString()方法
new Date()返回的是Date对象,Node.js默认打印时会调用toISOString()输出UTC格式。直接调用toString()方法,就能得到和Date()函数一致的本地时间格式:
var today = new Date(); console.log(today.toString()); // 输出示例:Thu Aug 04 2022 15:28:52 GMT+0530 (India Standard Time)
方法2:使用本地化格式方法
如果需要更灵活的时间展示,可以用toLocaleString()、toLocaleDateString()或toLocaleTimeString(),它们会自动适配系统时区生成对应格式:
// 完整本地时间字符串 console.log(today.toLocaleString()); // 仅日期部分 console.log(today.toLocaleDateString()); // 仅时间部分 console.log(today.toLocaleTimeString());
方法3:自定义格式输出
如果需要定制时间格式,可借助Intl.DateTimeFormat指定时区和格式规则:
const formatter = new Intl.DateTimeFormat('en-US', { timeZone: 'Asia/Calcutta', weekday: 'short', month: 'short', day: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', timeZoneName: 'long' }); console.log(formatter.format(today)); // 输出示例:Thu Aug 04 2022 15:28:52 India Standard Time
方法4:全局设置进程时区
如果希望整个Node.js进程的Date对象默认使用本地时区,可通过设置环境变量实现:
- 启动脚本时指定:
TZ='Asia/Calcutta' node your-script.js
- 在代码开头设置(需Node.js版本支持):
process.env.TZ = 'Asia/Calcutta'; const today = new Date(); console.log(today.toString()); // 输出本地时间格式
内容的提问来源于stack exchange,提问作者Gracie williams
相关产品推荐
相关产品推荐

