旧版本的Node.js中可以通过设置process.env.TZ
来修改默认时区。在Node v6.9.4及更高版本中,process.env.TZ
未定义,为undefined
。因此,通过修改process.env.TZ
无法达到修改默认时区的目的。但我们可以通过在Date
的prototype
上添加相应属性和方法实现修改时区。
示例代码:
// 添加TimeZone属性存放时区信息
Date.prototype.TimeZone = new Map([
['Europe/London', 0],
['Asia/Shanghai', -8],
['America/New York', 5]
])
// 添加zoneDate方法获取默认时区时间
Date.prototype.zoneDate = function () {
// process.env.TZ默认为undefined
if (process.env.TZ == undefined) {
return new Date();
} else {
for (let item of this.TimeZone.entries()) {
// 设置相应时区
if (item[0] == process.env.TZ) {
let d = new Date();
d.setHours(d.getHours() - item[1]);
return d;
}
}
}
}
// 默认世界时间 伦敦时间
let date = new Date().zoneDate();
console.log(date.toUTCString());
// 设置时区后的时间 上海时间
process.env.TZ = 'Asia/Shanghai';
date = new Date().zoneDate();
console.log(date.toUTCString());
// 纽约时间
process.env.TZ = 'America/New York';
date = new Date().zoneDate();
console.log(date.toUTCString());