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
相关产品推荐
相关产品推荐

