You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node-RED函数中为Date对象加毫秒偏移遇引用关联问题求助

Node-RED中Date对象赋值后同步修改的问题

问题说明

我在Node-RED的函数里需要给Date对象添加指定毫秒数,目前用setMilliseconds()方法实现(不确定是否有更高效的方式)。原本计划创建两个初始值完全一致的Date对象,给其中一个加上毫秒偏移后,计算二者的时间差(偏移量不固定,无法直接预设差值):

finish.setMilliseconds(finish.getMilliseconds() + 200);

但实际测试时出现了问题:修改其中一个对象后,另一个对象的值也跟着变了。

测试代码

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时间一致。start和finish同步变化是因为赋值方式的问题吗?

可行解决方案

我找到了能正常运行的写法,但还没完全搞懂失败的原因(猜测是共享内存地址?):

let start = new Date();
let finish = new Date(start);

内容的提问来源于stack exchange,提问作者carlos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 02:43:26