我需要向 Node-RED 中函数中的
date
对象添加毫秒数,我已经使用 .toMilliseconds()
方法解决了这个问题(不确定是否有更有效的方法)
我实例化两个
Date
类型的对象,并将毫秒数添加到其中之一:
finish.setMilliseconds(finish.getMilliseconds() + 200);
实例化两个对象并用完全相同的值初始化它们的原因是为了以后能够计算它们之间的间隔(偏移量不会是恒定的,否则我会知道间隔)
到目前为止,一切都很好。
当我尝试使用另一个
date
对象时,问题就出现了,因为它采用修改后的对象的值,并添加了毫秒:
let start = new Date();
let finish = start;
msg.TS = start.toISOString();
finish.setMilliseconds(finish.getMilliseconds() + 200);
msg.TS2 = finish.toISOString();
msg.TS3 = start.toISOString();
return msg;
这是调试窗口中的输出:
TS: "2023-09-27T14:51:36.522Z"
TS2: "2023-09-27T14:51:36.722Z"
TS3: "2023-09-27T14:51:36.722Z"
TS3
应包含原始日期时间而不是修改后的日期时间,不是吗?
start
和 finish
是否因其声明方式而采用相同的值?
谢谢!
** 编辑 **
我已经找到原因和解决办法了。以这种方式实例化对象,它按预期工作(虽然我仍然不知道为什么失败。可能是内存地址共享?):
let start = new Date();
let finish = new Date(start);
hardillb,非常感谢您的澄清!