找回密码
 立即注册

微信扫码登录

搜索
楼主: ghostist

[流程系列] 【破案了】nodered下时间早8小时

[复制链接]

10

主题

213

回帖

1863

积分

金牌会员

积分
1863
金钱
1640
HASS币
0
发表于 2025-7-25 20:16:00 | 显示全部楼层
hungheo 发表于 2024-7-27 23:09
我也是怎么设置都没用,最后用function转换一下时区,暂时解决

麻烦把函数贴出来一下好吗?感谢
回复

使用道具 举报

11

主题

279

回帖

2931

积分

金牌会员

积分
2931
金钱
2636
HASS币
20
发表于 2025-7-25 22:00:24 | 显示全部楼层
tangyali 发表于 2025-7-25 20:16
麻烦把函数贴出来一下好吗?感谢
// UTC+0 时间转换成北京时间UTC+8
function toBeijingTime(timeStr) {
    const date = new Date(timeStr);
    const localTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),
                               date.getUTCHours() + 8, date.getUTCMinutes(), date.getUTCSeconds());
    return `${localTime.getHours().toString().padStart(2, '0')}:${localTime.getMinutes().toString().padStart(2, '0')}`;
}

使用:
const time = toBeijingTime(任意UTC+0时间);

回复

使用道具 举报

10

主题

213

回帖

1863

积分

金牌会员

积分
1863
金钱
1640
HASS币
0
发表于 2025-7-26 10:58:54 | 显示全部楼层
hungheo 发表于 2025-7-25 22:00
使用:
const time = toBeijingTime(任意UTC+0时间);

感谢,非常简洁有效
回复

使用道具 举报

0

主题

1

回帖

23

积分

新手上路

积分
23
金钱
22
HASS币
0
发表于 2025-7-29 11:46:38 | 显示全部楼层
用下面的JS就可以转换时间显示格式:
const timestampMs = msg.payload; // 比如 1753759933120
const date = new Date(timestampMs);
msg.payload = date.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' });
return msg;
回复

使用道具 举报

0

主题

20

回帖

399

积分

中级会员

积分
399
金钱
379
HASS币
0
发表于 2025-9-19 17:56:59 | 显示全部楼层
有没有可能是你shanghai写错了。process.env.TZ = "Asia/Sanghai";
回复

使用道具 举报

3

主题

20

回帖

187

积分

注册会员

积分
187
金钱
164
HASS币
0
发表于 7 天前 | 显示全部楼层
用自带的date/time formatter节点就行了,啥都不用设置,拖出来用能用
11111.png
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-10-17 01:16 , Processed in 0.119633 second(s), 10 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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