【发布时间】:2018-04-17 15:15:10
【问题描述】:
我想做一些在使用 Date 类时需要更改进程日期的测试:
console.log(Date.now())
正常运行我的程序,进程将获取机器当前时间:
"scripts": {
"start": "node testDate.js"
}
是否有类似 cross-env 的东西来更改初始处理日期?
"scripts": {
"start": "cross-env CURRENT_DATE=<future-date> node testDate.js"
}
或者在运行时有解决方案吗?
NodeJS 可以更改进程日期吗?
process.DATE_CLOCK=Date("<future-date>")
console.log(Date.now())// will print the future date + time passed after previous line has been executed
【问题讨论】:
-
可以在node.js调用后向node脚本发送参数。例如:
$node testDate.js 1520978956795在 Node 中,您需要将此时间戳字符串作为数字解析给 Date 构造函数:var _date = new Date(parseFloat(process.argv[2]));并且新的 Date 对象将带有您作为参数发送的时间戳。对于未来的日期,您可以发送可以添加到 Date.now() 的时间戳偏移量 -
是的,我知道!但我想要一个全局解决方案来模拟具有未来值或任何其他值的日期!而且代码的每一部分都不会改变!
-
您找到解决方案了吗?
-
在文件顶部可以添加
if(process.env.testFlag==true))Date.now = () => { return new Date().getTime() - 60 * 60 * 1000; };
标签: javascript node.js date process environment-variables