精华内容
下载资源
问答
  • Docker 中设置时区

    2021-01-29 09:43:17
    我们位于东八区,启动容器或构建自己的镜像时,往往需要对时区进行设置。根据基础镜像的不同,设置时区的方法也有所区别。 基于 Debian 镜像 由于 Debian 镜像中已经包含了 tzdata,因此设置时区的方法比较简单...

    Docker Hub 中的官方镜像,一般都默认设置为 UTC 时间。而我们位于东八区,在启动容器或构建自己的镜像时,往往需要对时区进行设置。根据基础镜像的不同,设置时区的方法也有所区别。

    基于 Debian 镜像

    由于 Debian 镜像中已经包含了 tzdata,因此设置时区的方法比较简单,只需添加环境变量 TZ 即可。我们可以通过启动一个 Debian 容器,运行其中的 date 命令来验证。

    root@677e5c1c1e19:/# date
    Sat Jan 12 10:25:27 UTC 2019
    root@677e5c1c1e19:/# export TZ=Asia/Shanghai
    root@677e5c1c1e19:/# date
    Sat Jan 12 18:25:44 CST 2019
    

    当需要在容器中使用本地时间的时候,只需在启动容器时,添加参数-e TZ=Asia/Shanghai即可。

    如果是构建 Docker 镜像,可以这样写:

    FROM debian:stretch
    
    ENV TZ=Asia/Shanghai
    

    基于 Alpine 镜像

    与 Debian 镜像不同,Alpine 镜像中并没有包含 tzdata,所以只设置 TZ 环境变量并不能达到我们想要的效果,因此需要安装 tzdata。

    / # date
    Sat Jan 12 10:37:07 UTC 2019
    / # export TZ=Asia/Shanghai
    / # date
    Sat Jan 12 10:37:34 UTC 2019
    / # apk add tzdata
    ......
    ......
    / # date
    Sat Jan 12 18:38:18 CST 2019
    

    由于无法直接通过环境变量设置时区,因此需要在容器中使用本地时间时,只能先基于原有的镜像构建自己的镜像,在启动容器时使用自己构建的镜像即可。

    FROM alpine:3.9
    
    ENV TZ=Asia/Shanghai
    
    RUN apk update \
        && apk add tzdata \
        && echo "${TZ}" > /etc/timezone \
        && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
        && rm /var/cache/apk/*
    

    基于 Ubuntu 镜像

    Ubuntu 镜像中也没有包含 tzdata,设置时区的方法与 Alpine 镜像相似。

    root@2a33fc02c099:/# date
    Wed Mar  6 13:12:44 UTC 2019
    root@2a33fc02c099:/# export TZ=Asia/Shanghai
    root@2a33fc02c099:/# date
    Wed Mar  6 13:13:08 Asia 2019
    root@2a33fc02c099:/# echo "${TZ}" > /etc/timezone
    root@2a33fc02c099:/# ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime
    root@2a33fc02c099:/# apt update
    ......
    ......
    root@2a33fc02c099:/# apt install -y tzdata
    ......
    ......
    root@2a33fc02c099:/# date
    Wed Mar  6 21:15:52 CST 2019
    

    写成 Dockerfile 如下:

    FROM ubuntu:bionic
    
    ENV TZ=Asia/Shanghai
    
    RUN echo "${TZ}" > /etc/timezone \
        && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
        && apt update \
        && apt install -y tzdata \
        && rm -rf /var/lib/apt/lists/*
    
    展开全文
  • 这两天打docker的时候,发现自己的容器启动之后,里面date -R的输出时区是UTC,总是和北京时间差了8个小时. 标准镜像 时区是UTC 查看/etc/localtime,发现默认指向的是Etc/UTC时区.而且TZ环境变量也没有被设置. ...
  • 关于时区的理解

    2018-05-22 11:03:39
    美国和中国不一样,每个时区有自己的时间(西五到西八),东部时间,中部时间,山地时间...做项目的时候,数据存储为国际时间,然后以用户所在的时区为准,转化为用户当地采用的时间,比如,看nba的时候,我们关...

    美国和中国不一样,每个时区有自己的时间(西五到西八),东部时间,中部时间,山地时间,西部时间,阿拉斯加时间,夏威夷时间。(3-11)月采用夏令时要加1个小时。所以现在和美国东部差8+5-1=12个小时,在看新闻的时候就可以感受到,介绍的都是美国东部时间,美国太平洋(西部)时间的等。



    在做项目的时候,数据存储为国际时间,然后以用户所在的时区为准,转化为用户当地采用的时间,比如,在看nba的时候,我们关心的是,北京时间几点有比赛。

    展开全文
  • oozie是2018年初,工作开始时接触的,那期间有很多心得体会,都在自己的小本本上记着呢。目前就一点一点整理出来。以下是我当时的架构师让我总结在调研开发过程中关于oozie时区的总结,至今也很感谢那位架构师,他对...

    oozie是2018年初,工作开始时接触的,那期间有很多心得体会,都在自己的小本本上记着呢。目前就一点一点整理出来。以下是我当时的架构师让我总结在调研开发过程中关于oozie时区的总结,至今也很感谢那位架构师,他对我们这个team真的是非常用心。

    1.oozie默认时区是UTC,UTC是世界标准时间,指的是零时区(英国格林尼治天文台旧址)里的时间。

     中国所在的时区为东八区,所以中国的时间应该是在UTC时间上加上八小时,即常见的UTC+8时间。

    2.在开发oozie任务时必须在期望值的时间减去8小时,在转换为oozie的时区格式,即TZ格式,例如:“yyyyMMdd”T"HHmm"z。

     

    展开全文
  • 可这酱油还是没完全白打,我发现项目经理、产品、开发、测试们在项目后期都在纠结时区问题。虽然我也跟着开了几场关于时区问题会,可由于我没有真正参与吧,并没有真正理解为啥时区会出问题。。 不过Colin从那时...
    ###背景 为什么想到要写一篇关于时区问题的blog?因为。。 去年Colin参与开发了公司的一个独立app的开发,其中我只负责了“多目的地选择页”的开发,说白了就是去打了个酱油。。可这酱油还是没完全白打,我发现项目经理、产品、开发、测试们在项目后期都在纠结时区问题。虽然我也跟着开了几场关于时区问题的会,可由于我没有真正参与吧,并没有真正理解为啥时区会出问题。。 不过Colin从那时就告诉自己,下次等我遇到时区问题时,一定要好好研究,这块内容貌似挺有意思的。。 就这样,真让我等来了。。 ###为什么会有时区问题? 1. 国际化app中需要展示时间时 2. app中用到了Calendar类orDate类时

    总的来说,当需要把Date转化成时间字符串时,还有就是用到了Calendar类来计算时间时,如果用户在国外使用你的app时就可能存在时区问题。这里说的时区问题到底是什么问题呢?
    比如,北京时间5月23号5:30时,另外一个半球的国家很有可能是5月22号晚上,那么一个字符串“2018-5-23 5:30”经过转为Date就转成了当地的Date,当这个Date再转成字符串时就不再是“2018-5-23 5:30”了。
    ###该如何解决时区问题?
    ####1. 关于时区的几个基本概念
    要想彻底理解时区问题,我们需要先了解几个基本概念。

    1.协调世界时:Coordinated Universal Time(UTC):
    是英国格林尼治时间,格林尼治时间被称为零时区时间,也被称为绝对时间。
    2.格林尼治标准时:Greenwich Mean Time(GMT):
    是指位于伦敦郊区的皇家格林尼治天文台的标准时间,由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。 现在都采用UTC时间,是校正过的GMT时间。
    ####2. Android中处理时区问题的办法
    把当地时间都转为北京时间处理,这里有两个办法
    #####(1)全局设置app时区为北京时区

    TimeZone chinaTimeZone = TimeZone.getTimeZone("GMT+8");
    TimeZone.setDefault(chinaTimeZone);
    

    这个方法比较暴力,我们之前的独立app就是采用这种办法。不过,考虑到可能影响其他页面的功能,我没有采用这种办法。
    ####(2)在需要处理时间时,把本地时区的Date转为北京地区的Date

    //转换任意时区的办法(本篇blog精髓)
    private fun changeTimeZone(date: Date, oldZone: TimeZone, newZone: TimeZone): Date {
            var dateTmp: Date
            val timeOffset = oldZone.rawOffset - newZone.rawOffset
            dateTmp = Date(date.time - timeOffset)
            return dateTmp
    }
    //将当地时间转为北京时间的方法
    fun getDateOfBJTimeZone(date: Date): Date {
            var originTimeZone = TimeZone.getDefault()
            var bjTimeZone = TimeZone.getTimeZone("Asia/Shanghai")
            return changeTimeZone(date, originTimeZone, bjTimeZone)
    }
    

    上面提供了两个Date转换的方法,那需要用到Calendar类时,可以给Calendar设置一个时区的,办法如下:

    val c = Calendar.getInstance()
    c.timeZone = TimeZone.getTimeZone("Asia/Shanghai")
    c.timeInMillis = date.time
    c.add(Calendar.DATE, days)
    

    同样,String和Date互转时也可以设置时区,办法如下:

    val dateFormat = SimpleDateFormat(type)
    val timeZone = TimeZone.getTimeZone("Asia/Shanghai")
    dateFormat.timeZone = timeZone
    str = dateFormat.format(date)
    

    ###参考

    http://www.cnblogs.com/endure/p/3485281.html
    https://www.jianshu.com/p/098c16b39f9b
    https://blog.csdn.net/l_serein/article/details/6273362
    http://www.cnblogs.com/endure/p/3485281.html
    https://www.cnblogs.com/wenfei123chai/p/4267998.html
    https://blog.csdn.net/lovext4098477/article/details/46866879

    展开全文
  • 时区的概念 关于时区的概念,其实初中地理课已经涉及,很多人多少...整个地球分为二十四时区,也就是我们理解的二十四小时,每个时区就是一个小时,每个时区都自己的本地时间。国际无线电通信场合,为了统...
  • 这是Timezone.io网站的官方仓库。 这是一个SaaS项目,所有开发... 您可以在自己的项目中进行派生,做出贡献,修改项目并使用部分代码,但是出于接受注册和创建竞争服务的目的,您不能在自己的服务器上运行该软件;)
  • 其实使用Docker,虽然简单了,但是也不是我们想象中那么简单,如果没有人带话,有许多问题需要自己踩坑。 比方说,想要基础镜像里边部署我们的java项目,拉取下来基础镜像,其实是最简单内核,没有jdk,...
  • 整个地球分为二十四时区,每个时区都自己的本地时间。 Ø UTC时间与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT = UTC),格林威治时间和UTC时间用秒数来计算的。 Ø UTC时间与本地时间 UTC + ...
  • solr默认使用是utc格林尼治时间,与我们的GMT+8相差8个小时,网上好多解决办法是在自己应用中时间上加8个小时和减8个小时做变换;或者不用date类型,改为long。 个人感觉这两个办法不靠谱,明明是默认时区的...
  • 使用苹果手机的小伙伴们知道,我们需要登录自己的苹果账号和密码才能通过应用商店App Store下载软件,但有些时候账号和密码正确,却出现了下载不了软件的情况,这是为什么呢?很多因素都会导致这样的问题出现,...
  • 关于时区的问题,我自己做个笔记记...2、一般我们前台输入时间(年月日),是按照北京时间输入controller层数据由json转成object时,本地服务时间会加8个小时,linux服务器时间没有问题。 所以由json转成obj...
  • 您可以在自己的Dockerfile使用FROM simplepieng/base:{TAG}来构建生产映像,但是只有在才应该这样做。 7.2-cli-alpine3.9 7.3-cli-alpine3.9 关于Alpine Linux的注意事项 由于其大小,Alpine Linux是用于Docker...
  • 感想十四

    2015-10-15 13:32:55
    过去一周的时间,我们学习了如何根据你的项目搭建框架,在开发的过程中,如何去运用一些开放的框架,学习了如何进行主题切换,每一个步骤都在有条不紊的进行着,老师也是尽量多的将他自己的东西教给我。除了有主题的...
  • 内置时区数据仅操作系统更新时才更新,我们都知道这种情况发生的频率。 ; 能够更新自己的tz数据可以使您的应用程序保持最新且准确。 为什么要使用这个图书馆? 我知道您想什么:Joda-Time是一个很棒的库,并且...
  • 等 关于(人们)清醒时间(最终)最大众包数据库。... 当我Mozilla(一家了不起全球发行公司)时,我想知道其他同事是否醒着(所以,谢谢 , , ) 贡献者 @framp @pcalessio @mindyday 你?
  • 要获得T恤,您必须10月1日至31日之间任何时区发出五个请求请求。 拉取请求可以发送到GitHub上任何公共仓库,而不仅仅是我们突出显示请求。 拉取请求必须包含您自己进行提交。 您可以通过检查...
  • 这是Timezone.io网站的官方仓库。 这是一个SaaS项目,所有开发是公开... 您可以在自己的项目中派生,做出贡献,修改项目并使用部分代码,但是出于接受注册和创建竞争服务的目的,您不能在自己的服务器上运行此软件;)
  • 当您需要查看并首先检测自己的时区,然后能够所需的时区中进行转换时,可能会感到非常沮丧。这就是为什么我们提出了这个出色的扩展程序的原因,您可以其中搜索位置的同一选项卡上一秒钟内更改时区,而不会打扰...
  • 您可以使用此包从时间序列中提取预定义主题(例如时区,攀岩,基本社交互动),也可以将数据嵌入到序列感知潜在空间中,以无人监督情况下提取有意义主题道路! 两者可以包内使用,例如,以自动比较...
  • 您可以使用此包从时间序列中提取预定义主题(例如时区,攀岩,基本社交互动),也可以将数据嵌入到序列感知潜在空间中,以无人监督情况下提取有意义主题方法! 两者可以包内使用,例如,以自动比较...
  • 要获得T恤,您必须10月1日至31日之间任何时区发出五个请求请求。 拉取请求可以发送到GitHub上任何公共仓库,而不仅仅是我们突出显示请求。 拉取请求必须包含您自己进行提交。 您可以通过检查...
  • 我们所有人难以安排时间开会,同时又许多时区组成了一个完全分布式团队。 我们正在提议一种新“寻找时间”方法。 通过向该存储库提交票证来提供反馈。 请查看我们的以测试应用程序组件工作方式。 通过...
  • 解决docker中的mysql:5.7使用timestamp时间戳自动生成时间,却与当前系统时间差八小时的问题 ...因为数据库是老外发明的,自然默认时间是他们那儿的,而我们要跟自己的时间对上,那就需要改时区
  • 按照 cent os7 安装详解步骤安装以后,重启动,输入自己设置root密码,总是被提示 incorrect login,就是无法登陆。...怎么试不爽。我觉得这可能是cent os一...解决办法是,安装时一定要选上我们中国时区,中...
  • 浏览器指纹到底包含什么信息,它的出现会有什么好处或者风险,我们是否可以掩盖自己的浏览器指纹,小编相信不少人相当感兴趣这些问题。今天,小编会从这个问题来为大家揭开浏览器指纹的神秘面纱。 浏览器指纹包含...
  • 我们核心团队的所有成员可以查看我们的所有财务状况 (实际上是赚取或花费的每一分钱)并选择自己的薪水 。 我们有一个开放的假期政策,允许人们设置自己的工作时间表。 当我告诉人们林肯循环的运作方式时,...
  • 前言 掘金小册逛大佬博客的时候发现一个以前没咋注意到的知识点,所以突然兴趣来了,决定写篇博客。...DateTime 类型是没有时区信息的(时区无关),DateTime 类型保存的时间是当前会话所设置的时区对应的时

空空如也

空空如也

1 2 3 4 5
收藏数 92
精华内容 36
关键字:

我们都在自己的时区