Skip to content

Instantly share code, notes, and snippets.

@guangtuan
Created April 24, 2018 08:24
Show Gist options
  • Save guangtuan/43ba5a33b655be2af7d0cdf6c6e8fe7c to your computer and use it in GitHub Desktop.
Save guangtuan/43ba5a33b655be2af7d0cdf6c6e8fe7c to your computer and use it in GitHub Desktop.
Fix timestamp for Date
const origin = {};
origin.Date = Date;
const flag = {};
flag.installed = false;
function install(fixedTs) {
if (flag.installed === true) {
throw new Error('fixDate has been already installed!');
}
const _Date = Date;
Date = function (...args) {
switch (args.length) {
case 0:
return new _Date(fixedTs);
case 1:
return new _Date(args[0]);
case 2:
return new _Date(args[0], args[1]);
case 3:
return new _Date(args[0], args[1], args[2]);
case 4:
return new _Date(args[0], args[1], args[2], args[3]);
case 5:
return new _Date(args[0], args[1], args[2], args[3], args[4]);
case 6:
return new _Date(args[0], args[1], args[2], args[3], args[4], args[5]);
case 7:
return new _Date(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
}
}
if (_Date.now) {
Date.now = function now() {
return fixedTs;
};
}
if (_Date.toSource) {
Date.toSource = function toSource() {
return _Date.toSource();
};
} else {
delete Date.toSource;
}
Date.prototype = _Date.prototype;
Date.parse = _Date.parse;
Date.UTC = _Date.UTC;
flag.installed = true;
};
function unInstall() {
Date = origin.Date;
flag.installed = false;
};
module.exports = {
install: install,
unInstall: unInstall
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment