积分 141
金钱 113
威望 0
贡献 0
HASS币 0
注册会员
积分 141
金钱 113
HASS币 0
本帖最后由 macliang 于 2022-2-12 00:48 编辑
最近将HA的数据库迁移至NAS的MariaDB,结果发现记录中的时间均为UTC时间,而非本地时间,可是在HA中已经将时区设置为Shanghai了,但为什么数据库记录的数据却还是UTC时间呢,网上研究了一下,发现问题所在,特给大家分享一下。
原因:
如果是在VMWareEXSi虚拟机系统安装HomeAssistant系统,且将用户设置的时区设为上海 ,但HA的官方文件中说配置文件里的time_zone只用于显示和自动化,内部的时区还是UTC,所以通过API(例如数据库中记录的时间)读出的设备信息里的update_time都比上海提前了8个小时,也就是说没有将UTC时间加8。
解决方案:
查阅了很多资料,在VMWare中都没有更改时区的相关办法, 什么tzselect、timedatectl等命令一概没有,在虚拟机管理界面中更改本地时间也不行,最终找的一个更改正确时区的办法如下:
1、在VMWare控制台服务中打开ssh
2、用ssh登录到VMWare主机
3、查看主机时间
date -R
Fri, 11 Feb 2022 14:40:25 +0000
复制代码
可以看到,时区为0,而并非+0800
4、从其他一台Linux主机拷贝一个 /usr/share/zoneinfo/Asia/Shanghai 文件到本地(见附件),让后 将该文件上传至VMware主机 /etc目录,如果是linux系统中可以用scp命令 ,用法为
scp 用户名@远程主机ip:/usr/share/zoneinfo/Asia/Shanghai /home/myfile/
#或者干脆把整个远程Asia目录都拷贝到本地当前目录,当前目录可以用pwd命令查看
scp -r 用户名@远程主机ip:/usr/share/zoneinfo/Asia
cd Asia
#将文件拷贝到VMware主机etc目录
scp Shanghai root@Vmware主机ip:/etc
复制代码
5、将Shanghai文件替换为localtime文件
mv /etc/localtime /etc/localtime.bak
mv Shanghai /etc/localtime
复制代码
6、再次查看系统时间,设置成功
date -R
Fri, 11 Feb 2022 23:20:38 +0800
复制代码
7、如果VMware没有启动NTP服务,可以用一下命令设置VMware系统时间
esxcli system time set -H 10 -m 34 -s 18
#esxcli 命令参数:
# -d|--day=<long> Day
# -H|--hour=<long> Hour
# -m|--min=<long> Minute
# -M|--month=<long> Month
# -s|--sec=<long> Second
# -y|--year=<long> Year
复制代码