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

Node-RED中使用JS计算指定格式日期与当前时间的时间差求助

Node-RED时间差计算代码修正

原代码存在的问题

  • 直接把payload的日期字符串赋值给start_time,没转换成可计算的时间戳,和数字类型的end_time相减会得到无效结果(NaN)
  • 重复创建Date对象,属于冗余代码
  • 没使用需求里指定的sensor.time作为对比时间,而是用了当前系统时间,不符合要求

修正后的代码

// 把payload里的日期字符串转成Date对象,再获取毫秒级时间戳
const startTime = new Date(msg.payload).getTime();

// 获取sensor.time的时间戳:如果sensor.time是Date对象直接用getTime(),如果是字符串就用new Date转换
const endTime = new Date(msg.sensor.time).getTime();

// 计算时间差(单位:毫秒),需要其他单位可自行转换,比如除以1000得到秒
const timeDifference = endTime - startTime;

// 把结果存到payload里,方便后续节点调用
msg.payload = timeDifference;
return msg;

补充说明

  • 如果sensor.time本身就是数字类型的时间戳,直接用msg.sensor.time即可,不用再转Date
  • 时间差默认是毫秒,转换单位示例:
    • 秒:timeDifference / 1000
    • 分钟:timeDifference / (1000 * 60)
    • 小时:timeDifference / (1000 * 60 * 60)
  • 你提供的日期格式是标准ISO格式,JavaScript的Date构造函数可以直接解析,无需额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:51:27