请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 636|回复: 9

[教程系列] 【node-red】自用:读取时间的节点 node-red-contrib-moment

[复制链接]

20

主题

211

帖子

857

积分

高级会员

Rank: 4

积分
857
金钱
646
HASS币
10
发表于 2023-1-5 13:36:10 | 显示全部楼层 |阅读模式
本帖最后由 damonwe 于 2023-1-19 22:45 编辑

工具:node-red-contrib-moment




下载好这个节点模块后(下载方法论坛里应该有很多,这里就不赘述了)
映入眼帘的是下面2个节点


bdb21819cfc260ee003f640d76ae0f9.png

这里我们用第一个:Date/Time Formatter
打开节点后,是下面这样的界面

2b7a00cdab48eb0191830305197b631.png

时区改为自己的时区(国内的统一Shanghai)
重点是Output Format
上面说了用的是ISO8601的格式
网上一搜就有,这里我简单说一下吧

如果空着,会出现如下格式的payload
YYYY-MM-DDThh:mm:ss.mmmZ
比如我的就是"2023-01-05T05:20:24.368Z"
但我当时的时间其实是13点,但小时写成了05,不知道什么原因。

但我们用自动化的话可以按照需求只提取需要的格式,那么就在Output Format里面填写信息,如:
假定现在的时间是 2021年2月3日4点5分6秒(一般不需要毫秒吧,btw毫秒是mmm),那么:

L => 02/03/2021
YYYY => 2021
YY => 21
MM => 02
DD =>03
HH => 04
mm => 05
ss => 06

也可以将他们组合起来

YYMMDD => 210203
HHmm => 0405

甚至里面可以添加一些其他字符,方便我们截取

iYYiMM => i21i02

————————————————————
2023年1月19日
补充一下
可以在这个网站看到所有的格式,在页面向下找,有一个表格
Moment.js | Docs (momentjs.com)

再有就是时区的问题了,如果在Output Format中什么都没填,默认是UTC时间,如果填了其它字符,就会根据输出时区改变。
不停地试吧,上面的网站翻译一下也能解释一些,包括nodered页面上打开的解释。

评分

参与人数 1金钱 +20 HASS币 +10 收起 理由
+ 20 + 10 虽然看不懂,但感觉很厉害的样子。.

查看全部评分

回复

使用道具 举报

8

主题

42

帖子

268

积分

论坛分享达人

积分
268
金钱
221
HASS币
20
发表于 2023-1-6 09:20:19 | 显示全部楼层
学习了
回复

使用道具 举报

0

主题

94

帖子

871

积分

高级会员

Rank: 4

积分
871
金钱
777
HASS币
0
发表于 2023-1-6 10:50:09 | 显示全部楼层
你好,这个节点的作用是什么?怎么用呢
回复

使用道具 举报

3

主题

293

帖子

2131

积分

论坛积极会员

积分
2131
金钱
1838
HASS币
10
发表于 2023-1-6 13:43:59 | 显示全部楼层
不错不错,新手友好。不过function里直接Date()用习惯了,哈哈哈
回复

使用道具 举报

20

主题

211

帖子

857

积分

高级会员

Rank: 4

积分
857
金钱
646
HASS币
10
 楼主| 发表于 2023-1-6 16:03:21 | 显示全部楼层
13990973177 发表于 2023-1-6 10:50
你好,这个节点的作用是什么?怎么用呢

作用就是你可以比如几点让扫地机器人去扫地,几点打开新风机什么的
回复

使用道具 举报

20

主题

211

帖子

857

积分

高级会员

Rank: 4

积分
857
金钱
646
HASS币
10
 楼主| 发表于 2023-1-6 16:11:55 | 显示全部楼层
tcwj2008 发表于 2023-1-6 13:43
不错不错,新手友好。不过function里直接Date()用习惯了,哈哈哈

哈哈,我主要不太会用javascript,懒得系统去学。
回复

使用道具 举报

11

主题

141

帖子

1079

积分

金牌会员

Rank: 6Rank: 6

积分
1079
金钱
938
HASS币
0
发表于 2023-1-6 19:53:00 | 显示全部楼层
中国用北京时间,属于东8区,比UTC早8小时,上面的UTC时间2023-01-05T05:20:24.368Z变为本地时间要在小时上+8,也就是本地13时
回复

使用道具 举报

20

主题

211

帖子

857

积分

高级会员

Rank: 4

积分
857
金钱
646
HASS币
10
 楼主| 发表于 2023-1-9 16:51:52 | 显示全部楼层
cjnt007 发表于 2023-1-6 19:53
中国用北京时间,属于东8区,比UTC早8小时,上面的UTC时间2023-01-05T05:20:24.368Z变为本地时间要在小时上 ...

原来如此,我以为选项里面写了时区后默认就是东8
回复

使用道具 举报

3

主题

40

帖子

310

积分

中级会员

Rank: 3Rank: 3

积分
310
金钱
270
HASS币
0
发表于 2023-1-10 13:17:44 | 显示全部楼层
damonwe 发表于 2023-1-6 16:03
作用就是你可以比如几点让扫地机器人去扫地,几点打开新风机什么的

我是小白, 我现在就直接用inject 节点设置每天什么时间去激活什么功能, 可以说一下你这个和inject节点有什么区别吗? Screenshot 2023-01-10 at 15.46.49.jpg
回复

使用道具 举报

20

主题

211

帖子

857

积分

高级会员

Rank: 4

积分
857
金钱
646
HASS币
10
 楼主| 发表于 2023-1-10 22:54:17 | 显示全部楼层
leotantantan 发表于 2023-1-10 13:17
我是小白, 我现在就直接用inject 节点设置每天什么时间去激活什么功能, 可以说一下你这个和inject节点有什 ...

一个是这个更方便得读取到你想要的时间,第二是可以避免有的node-red默认时区不是东8区。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2023-2-7 22:31 , Processed in 0.077448 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表