jetlinks 规则编排中的函数节点使用 js 脚本格式化输出当前系统时间的坑

网上搜到的都是类似如下这种:

// 获取当前时间
var date= new Date();// 格式化输出当前时间
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();var formattedDate = year + "-" + ( month  + 1 ) + "-" + day + " " + hour + ":" + minute  + ":" + second ;console.log(formattedDate); // 输出:yyyy-MM-dd HH:mm:ss

将其写入到 jetlinks 规则编排函数节点中:

var ctx = context;handler.onMessage(function(ruleData){var reportTime = getReportTime();ctx.getLogger().warn("当前系统时间:");ctx.getLogger().warn(reportTime );return ruleData.data
})function getReportTime(){// 获取当前时间var date = new Date();// 格式化输出当前时间var year = date.getFullYear();var month = date.getMonth();var day = date.getDate();var hour = date.getHours();var minute = date.getMinutes();var second = date.getSeconds();var reportTime = year + "-" + ( month  + 1 ) + "-" + day + " " + hour + ":" + minute  + ":" + second ;return reportTime;}

运行报错:

java.lang.UnsupportedOperationException: can not cast to number:-at org.jetlinks.reactor.ql.utils.CastUtils.castNumber(CastUtils.java:160)Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: 
Assembly trace from producer [reactor.core.publisher.FluxDefer] :reactor.core.publisher.Flux.deferorg.jetlinks.pro.rule.engine.executor.ScriptTaskExecutorProvider.lambda$createExecutor$8(ScriptTaskExecutorProvider.java:77)
Error has been observed at the following site(s):*_______Flux.defer ⇢ at org.jetlinks.pro.rule.engine.executor.ScriptTaskExecutorProvider.lambda$createExecutor$8(ScriptTaskExecutorProvider.java:77)|_ Flux.mapNotNull ⇢ at org.jetlinks.pro.rule.engine.executor.ScriptTaskExecutorProvider.lambda$createExecutor$8(ScriptTaskExecutorProvider.java:95)...

输出如下几个变量的类型:

var ctx = context;handler.onMessage(function(ruleData){var reportTime = getReportTime();ctx.getLogger().warn("当前系统时间:");ctx.getLogger().warn(reportTime );return ruleData.data
})function getReportTime(){// 获取当前时间var date = new Date();// 格式化输出当前时间var year = date.getFullYear();var month = date.getMonth();var day = date.getDate();var hour = date.getHours();var minute = date.getMinutes();var second = date.getSeconds();ctx.getLogger().warn( typeof year );ctx.getLogger().warn( typeof month );ctx.getLogger().warn( typeof day );ctx.getLogger().warn( typeof hour );ctx.getLogger().warn( typeof minute );ctx.getLogger().warn( typeof second );var reportTime = year + "-" + ( month  + 1 ) + "-" + day + " " + hour + ":" + minute  + ":" + second;return reportTime;}

发现都是 number 类型:

怀疑是这里的语法要比 浏览器中的 javascript 语法要严格一些,数字类型不能和字符串类型直接相加,需要先转成字符串,修改后的脚本如下:

var ctx = context;handler.onMessage(function(ruleData){var reportTime = getReportTime();ctx.getLogger().warn("当前系统时间:");ctx.getLogger().warn(reportTime );return ruleData.data
})function getReportTime(){var date = new Date();var year = date.getFullYear().toString();var month = date.getMonth() + 1;if (month < 10) {month = '0' + month.toString();} else {month = month.toString();}var day = date.getDate();if (day < 10) {day = '0' + day.toString();} else {day = day.toString();}var hours = date.getHours();if (hours < 10) {hours = '0' + hours.toString();} else {hours = hours.toString();}var minutes = date.getMinutes();if (minutes < 10) {minutes = '0' + minutes.toString();} else {minutes = minutes.toString();}var seconds = date.getSeconds();if (seconds < 10) {seconds = '0' + seconds.toString();} else {seconds = seconds.toString();}var reportTime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':00';return reportTime;}

运行发现果然成功了^_^。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/415140.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能化未来:NFC技术助力数字化社区

引言 数字化转型深刻改变着社区管理的方式&#xff0c;其中NFC技术作为一种近场通讯技术&#xff0c;正在为数字社区的智能化未来提供强有力的支持。 NFC技术简介 近场通讯技术(NFC)是一种无线通信技术&#xff0c;能够实现设备之间的近距离通讯。在数字社区建设中&#xf…

JS-元素尺寸与位置

通过js的方式&#xff0c;得到元素在页面中的位置 获取宽高 元素.offsetWidth 元素.offsetHeight 1&#xff09;获取元素的自身宽高、包括元素自身设置的宽高paddingborder 2&#xff09;获取出来的是数值&#xff0c;方便计算 3&#xff09;注意&#xff1a;获取的是可视…

30分钟带你深入优化安卓Bitmap大图

30分钟带你源码深入了解Bitmap以及优化安卓大图 一、前言二、Bitmap入门1. 如何创建Bitmap?2. Bitmap的堆内存分布在哪里3. 图片文件越大&#xff0c;Bitmap堆内存会越大吗&#xff1f;4. 如何管理Bitmap的内存&#xff1f;5. 实战修改Bitmap的堆内存&#xff0c;改变图片的图…

Linux Shell脚本入门

目录 介绍 编写格式与执行方式 Shell脚本文件编写规范 脚本文件后缀名规范 首行格式规范 注释格式 shell脚本HelloWord入门案例 需求 效果 实现步骤 脚本文件的常用执行三种方式 介绍 3种方式的区别 小结 多命令处理 Shell变量 环境变量 目标 Shell变量的介绍 变量类型 系统环境…

安全帽识别-赋能深圳自贸中心智慧工地

在当今的建筑行业中&#xff0c;安全管理一直是一个至关重要的议题。深圳自贸中心项目在这方面进行了一次有益的尝试——实施智慧工地安全帽识别系统。本文将对这一创新举措进行简要介绍。 项目背景 深圳自贸中心&#xff0c;作为一项标志性建设项目&#xff0c;承载着城市发展…

C语言——大头记单词

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 每一发奋努力的背后&#xff0c;必有加…

服务器数据恢复—异常关机导致Linux服务器目录项被破坏数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌PowerEdge R730服务器PowerVault MD3200存储&#xff0c;划分若干lun&#xff0c;操作系统版本是centos7&#xff0c;EXT4文件系统。 服务器故障&分析&#xff1a; 服务器在运行过程中自动关机且无法启动&#xff0c;服务器管理员对服…

C语言——atoi函数解析

目录 前言 atoi函数的介绍 atoi函数的使用 atoi函数的模拟实现 前言 对于atoi函数大家可能会有些陌生&#xff0c;不过当你选择并阅读到这里时&#xff0c;请往下阅读&#xff0c;我相信你能对atoi函数熟悉该函数的头文件为<stdlib.h> 或 <cstdlib> atoi函数的…

Python学习从0到1 day6 python基础语法4 标识符、运算符和字符串

苦厄难夺凌云志&#xff0c;不死终有出头日 ——24.1.18 一、标识符 1.什么是标识符 标识符&#xff1a;用户在编程的时候所使用的一系列名字&#xff0c;用于给变量、类、方法等命名 2.标识符命名规则 python中&#xff0c;标识符命名规则主要有三类&#xff1a; ①内容限定 …

详细推导BEC和BSC的信道容量

目录 介绍 一. 熵的计算公式 二. 互信息 三. 计算BSC的信道容量 四. BEC信道与高斯信道容量 五. 信道传输速率与信道容量 小结 介绍 binary symmetric channel&#xff0c;简称BSC&#xff0c;中文翻译为二进制对称信道。 binary erasure channel&#xff0c;简称BEC&…

C++ 设计模式之策略模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】什么是策略模式&#xff08;第14种模式&#xff09; 策略模式是⼀种⾏为型设计模式&…

【算法】递归

递归 递归初始递归&#xff1a;数列求和递归的应用&#xff1a;任意进制转换递归深度限制递归可视化&#xff1a;分形树递归可视化&#xff1a;谢尔宾斯基Sierpinski三角形递归的应用&#xff1a;汉诺塔递归的应用&#xff1a;探索迷宫 分治策略和递归优化问题兑换最少个数硬币…