BVCODE
随风而逝

Node.js修改默认时区

旧版本的Node.js中可以通过设置process.env.TZ来修改默认时区。在Node v6.9.4及更高版本中,process.env.TZ未定义,为undefined。因此,通过修改process.env.TZ无法达到修改默认时区的目的。但我们可以通过在Dateprototype上添加相应属性和方法实现修改时区。

示例代码:

// 添加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());

 

赞(0)
本文采用 CC BY-SA 4.0 许可:BVCODE 随风而逝 » Node.js修改默认时区

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址