Constructors and objects behave exactly like built-in
Date; the TZ offset is configurable
Tested against Test262 for the compatibility with Date.
No support for daylight saving time. Fixed offsets only.
$ npm install --save timezoned-date
const timezonedDate = require('timezoned-date');
console.log(new Date());
// Sat Sep 19 2017 02:39:56 GMT+0300 (Ixania Daylight Time)
const UtcDate = timezonedDate.makeConstructor(0);
console.log(new UtcDate());
// Fri Sep 18 2017 23:39:56 GMT+0000 (UTC)
global.Date = timezonedDate.makeConstructor(240); // minutes
console.log(new Date());
// Sat Sep 19 2017 03:39:56 GMT+0400An example of using it with jsdom:
const dom = new JSDOM(`<p>Hello</p>`, {
  beforeParse(window) {
    window.Date = timezonedDate.makeConstructor(240);
  }
});Returns a constructor function compatible with Date bound to the specified offset.
Apache 2.0 © 2013-2017 James A. Rosen, Georgii Dolzhykov