🎯 方案一:最简优化(推荐)
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元