如何在Node.js中设置服务器时间

时间:2018-06-30 19:56:29

标签: javascript node.js mocking

我想将自定义时间设置(模拟)到Node.js服务器以进行测试。像这样:

console.log(new Date());
// Sat Jun 30 2018 20:00:00 GMT+0100
//                 ^^
someFunctionToSetTime('Sat Jun 30 2018 12:00:00 GMT+0100')
//                                     ^^
console.log(new Date());
// Sat Jun 30 2018 12:00:00 GMT+0100
//                 ^^

我该怎么做?

P.S。我真的不想伪造Date类。

2 个答案:

答案 0 :(得分:1)

只是猴子修补了Date构造函数:

let now = 'Sat Jun 30 2018 12:00:00 GMT+0100';

{
   const oldDate = Date;
   Date = function(...args) {
     if(args.length) {
       return new oldDate(...args);
     } else {
      return new oldDate(now);
    }
  };
}

答案 1 :(得分:0)

第一个选项:如果没有外部模块,则可以使用此方法在node.js中获取时区日期和时间  var myDate = new Date().toLocaleString('en-US', { timeZone: 'Europe/Paris' });

第二个选项:使用momentjs timezone巫婆允许您设置位置以及更多信息……只需检查文档即可。