🎯 方案一:最简优化(推荐)
javascript
// 获取当前时间
var now = new Date();
// 一次性提取所有时间组件
var timeData = {
year: now.getFullYear(),
month: (now.getMonth() + 1).toString().padStart(2, '0'),
day: now.getDate().toString().padStart(2, '0'),
hours: now.getHours().toString().padStart(2, '0'),
minutes: now.getMinutes().toString().padStart(2, '0'),
seconds: now.getSeconds().toString().padStart(2, '0')
};
// 构建最终payload
msg.payload = {
time: `${timeData.hours}:${timeData.minutes}:${timeData.seconds}`,
date: `${timeData.year}-${timeData.month}-${timeData.day}`,
hours: timeData.hours,
minutes: timeData.minutes,
seconds: timeData.seconds,
fullTime: now.toLocaleString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false // 24小时制
}),
timestamp: now.getTime(), // 添加时间戳
isoString: now.toISOString() // 添加ISO格式
};
return msg;
🚀 方案二:使用工具函数(适合频繁使用)
javascript
// 格式化数字为两位字符串
function formatTwoDigits(num) {
return num.toString().padStart(2, '0');
}
// 获取格式化时间对象
function getFormattedTime() {
var now = new Date();
return {
year: now.getFullYear(),
month: formatTwoDigits(now.getMonth() + 1),
day: formatTwoDigits(now.getDate()),
hours: formatTwoDigits(now.getHours()),
minutes: formatTwoDigits(now.getMinutes()),
seconds: formatTwoDigits(now.getSeconds())
};
}
// 主逻辑
var timeData = getFormattedTime();
msg.payload = {
time: `${timeData.hours}:${timeData.minutes}:${timeData.seconds}`,
date: `${timeData.year}-${timeData.month}-${timeData.day}`,
hours: timeData.hours,
minutes: timeData.minutes,
seconds: timeData.seconds,
fullTime: `${timeData.year}/${timeData.month}/${timeData.day} ${timeData.hours}:${timeData.minutes}:${timeData.seconds}`,
timestamp: Date.now()
};
return msg;
📊 方案三:扩展功能版(包含更多时间信息)
javascript
var now = new Date();
var timeData = {
year: now.getFullYear(),
month: (now.getMonth() + 1).toString().padStart(2, '0'),
day: now.getDate().toString().padStart(2, '0'),
hours: now.getHours().toString().padStart(2, '0'),
minutes: now.getMinutes().toString().padStart(2, '0'),
seconds: now.getSeconds().toString().padStart(2, '0'),
milliseconds: now.getMilliseconds().toString().padStart(3, '0'),
weekday: ['日', '一', '二', '三', '四', '五', '六'][now.getDay()] // 中文星期
};
msg.payload = {
// 基本时间信息
time: `${timeData.hours}:${timeData.minutes}:${timeData.seconds}`,
date: `${timeData.year}-${timeData.month}-${timeData.day}`,
datetime: `${timeData.year}-${timeData.month}-${timeData.day} ${timeData.hours}:${timeData.minutes}:${timeData.seconds}`,
// 分解时间组件
hours: timeData.hours,
minutes: timeData.minutes,
seconds: timeData.seconds,
year: timeData.year,
month: timeData.month,
day: timeData.day,
// 附加信息
weekday: timeData.weekday,
weekNumber: Math.ceil((now.getDate() + 6 - now.getDay()) / 7), // 周数
timestamp: now.getTime(),
isoString: now.toISOString(),
// 兼容原有字段
fullTime: now.toLocaleString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false
})
};
return msg;
⚡ 方案四:最简洁版(性能最优)
javascript
var now = new Date();
var pad = n => n.toString().padStart(2, '0');
msg.payload = {
time: `${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`,
date: `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}`,
hours: pad(now.getHours()),
minutes: pad(now.getMinutes()),
seconds: pad(now.getSeconds()),
fullTime: now.toLocaleString()
};
return msg;
💡 主要改进点:
- 减少重复代码:使用模板字符串和统一的数据结构
- 添加有用字段:时间戳、ISO格式、星期等信息
- 更好的格式化:使用本地化选项确保一致性
- 性能优化:减少不必要的函数调用
- 可维护性:代码结构更清晰
📋 输出示例:
json
{
"time": "14:30:45",
"date": "2025-09-18",
"hours": "14",
"minutes": "30",
"seconds": "45",
"fullTime": "2025/09/18 14:30:45",
"timestamp": 1726633845000,
"isoString": "2025-09-18T06:30:45.000Z",
"weekday": "四"
}
推荐使用方案一,它在简洁性和功能性之间取得了很好的平衡。如果你的项目中有多处需要时间格式化,方案二会更合适。
使用 Moment 节点(node-red-contrib-moment)
如果需要更强大的时间格式化功能,可以使用 node-red-contrib-moment 节点。
- 安装节点:通过 Node-RED 的“节点管理”安装 node-red-contrib-moment。
- 使用 Date/Time Formatter 节点:配置该节点时,在 Output Format 字段中指定你需要的格式,例如:
- 设置时区:在节点的配置中,将时区(Timezone)设置为 Asia/Shanghai (上海) 以确保获取中国时间。
支付10元解锁内容
会员尊享 0.95 折优惠,可节省 0.50元