inject在specific time时无法触发



  • inject在specific time时无法触发,自己电脑windows平台装的node-red就没问题,这里设置特定时间就是无法触发



  • @shenyu1996 timezone的问题
    之前因为考虑到有不同时区的国际友人使用,所以默认是使用UTC+0的时间
    可以试试 inject 的 timestamp 转换成日期就知道了

    所以目前来说,可以手动转换下时区,比如想 15:00 触发,设置为 7:00 就可以了



  • 哎呀,我记得当时也考虑到估计是这个,大概是当时时间算错啦 2333 (debug那边的时间输出倒是+8的时区,不能统一下么)



  • @librae 0_1504232002259_Baidu IME_2017-9-1_10-12-20.jpg
    好像不止是时区,还有时差,和debug的日志差了5s



  • 是这样子的,Node-RED 中 inject 节点的 timestamp 是获取的服务器时间,而 debug message 中用于显示的时间戳是前端(也就是你的浏览器中)运行的 javascript 获取的时间,所以这两个时间有出入是有可能的,因为使用的ntp服务器可能会不同,客户端的时间也有可能是手动设置过的(但后者应该不是你的情况)。

    debug message 中显示的时间戳在Node-RED前端代码里是这样获取的:

    function getTimestamp() {
        var d = new Date();
        return d.toLocaleString();
    }
    

    而它也仅仅是作为日志的时间戳供debug参考。

    Node-RED 所有后台流程中的节点里获取到的,是真正的服务器时间,也是所有的后台数据和逻辑所参考的时间基准。

    时区转化是另外一个问题。在 Date 对象中获取的仅仅是一个标准 timestamp,本质上他是可以被格式化为任意时区的时间,在 Node-RED 中也一样。
    可以使用 moment.js 来转换到需要的时区,对应的节点可以通过节点管理器安装,也试了一下和你一样的简单的获取时间流程,如下图所示。
    也可以看到我这边的情况是并没有那个5s的时差。

    0_1504241779484_Screen Shot 2017-09-01 at 12.46.05.png

    0_1504241916217_Screen Shot 2017-09-01 at 12.58.14.png

    0_1504241931215_Screen Shot 2017-09-01 at 12.45.44.png

    0_1504241964925_Screen Shot 2017-09-01 at 12.59.02.png

    0_1504242023077_Screen Shot 2017-09-01 at 12.45.34.png


Log in to reply
 

Looks like your connection to NodeBB was lost, please wait while we try to reconnect.