Created
April 24, 2018 08:24
-
-
Save guangtuan/43ba5a33b655be2af7d0cdf6c6e8fe7c to your computer and use it in GitHub Desktop.
Fix timestamp for Date
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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