docker容器时区错误问题该怎么解决
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,docker容器时区错误问题该怎么解决,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。背景利用node-schedule定时任务库写了一个
千家信息网最后更新 2025年02月06日docker容器时区错误问题该怎么解决背景
问题
问题分析及解决办法
新的问题
问题分析及解决办法
docker容器时区错误问题该怎么解决,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
背景
利用node-schedule定时任务库写了一个自动定时发邮件的脚本,每天上午7点发送邮件,邮件中会获取当天日期
问题
收到邮件的时间为下午三点,而不是上午7点,推测是时区设置问题
问题分析及解决办法
经过排查发现,node-schedule库不支持选择时区,所以默认按照全球标准时UTC发送,我们通常传入的时间是中国上海时区时间CST,中间会相差八小时。
更换了定时任务库,采用node-schedule-tz定时任务库,支持选择CST时区,并采用corntab时间格式
let j = schedule.scheduleJob('name',"0 7 * * *",'Asia/Shanghai', function () { console.log("执行任务"); getAllDataAndSendMail();});
新的问题
更改完时间后,出现了一个新的问题,邮件中获取的时间是昨天的时间,而不是今天的时间
问题分析及解决办法
想了一下,代码中总共有两个地方获取了时间,一个是定时任务库传入的发邮件的时间,一个是脚本里获取当前时间
let today = new Date()
因为我有打印today的log,查看下日志
docker logs -f [containerID] # today:2021-11-12T23:00:00.106Z
发现早上7点发送的邮件,today拿到的时间是前一天的23点,也是相差8小时
利用下面的命令,进入docker容器中查看时间
$ docker exec -it [containerID] sh# 进入容器之后前面会变成## 输入date查看时间date # Sat Nov 13 05:05:31 UTC 2021
果然是UTC全球标准时,说明发送邮件时间确实改回来了,但是代码执行时获取的时间是此刻的全球标准时。
我们把本机的时间复制给容器的时间
docker cp /etc/localtime [containerID]:/etc/
再次按照上述查看容器内时间,发现已经改回来CST了,应该没有什么问题了
看完上述内容,你们掌握docker容器时区错误问题该怎么解决的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
时间
问题
邮件
容器
时区
任务
全球
标准
标准时
错误
代码
内容
办法
小时
方法
更多
脚本
分析
支持
选择
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
威廉公司英超赔率大数据库
历史数据库远程连接设置
数据库找到学位论文
什么数据库可以免费下载外文文献
科技互联网发展文字
远程控制软件无法连接服务器
税控软件打开数据库异常
服务器帧同步
360网络技术专利
京东云可以做服务器吗
数据库实例名xml配置
杨浦区创新软件开发优势
上海数据网络技术服务一体化
做软件开发的最好去哪些城市
博朗高西软件开发成都
金融机构网络安全问题
网络安全法审查
钉讯服务器瘫痪
台达服务器1000w电源评测
不同数据库建立链接
手机服务器建立安全的链接
职业差评师数据库
杭州dell服务器生产商
360网络技术专利
基于模型的软件开发优点
工匠精神 软件开发
上海大承网络技术有限公司
澳门互联网科技有限公司
长宁区无线网络技术口碑推荐
旧服务器回收今日报价