纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

docker 时区错误 docker容器时区错误问题

AntThinker   2021-12-10 我要评论
想了解docker容器时区错误问题的相关内容吗AntThinker在本文为您仔细讲解docker时区错误的相关知识和一些Code实例欢迎阅读和指正我们先划重点: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了应该没有什么问题了


相关文章

猜您喜欢

  • Float保留小数位精度 Java Float 保留小数位精度的实现

    想了解Java Float 保留小数位精度的实现的相关内容吗科学之星在本文为您仔细讲解Float保留小数位精度的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Java Float,Float精度,保留小数位精度下面大家一起来学习吧。..
  • JPA设置默认字段及长度 JPA设置默认字段及其长度详解

    想了解JPA设置默认字段及其长度详解的相关内容吗我的天才女友在本文为您仔细讲解JPA设置默认字段及长度的相关知识和一些Code实例欢迎阅读和指正我们先划重点:JPA设置默认字段,JPA设置默认字段长度下面大家一起来学习吧。..

网友评论

Copyright 2020 www.ducttapegames.com 【环球游戏网】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式