关于时区:时区的坑别再踩了

原创:打码日记(微信公众号ID:codelogs),欢送分享,转载请保留出处。简介最近在应用date命令时,发现示意东8区(中国时区)要应用GMT-8,但在Java中却须要应用GMT+8,如下: $ TZ='GMT-8' date -d@1647658144 +'%F %T %:z'2022-03-19 10:49:04 +08:00# 如果用GMT+8,反而慢了16小时$ TZ='GMT+8' date -d@1647658144 +'%F %T %:z'2022-03-18 18:49:04 -08:00而在Java中,如下: DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss XXX");String dateStr = dtf.format(Instant.ofEpochSecond(1647658144).atZone(ZoneId.of("GMT+8")));System.out.println(dateStr);//输入2022-03-19 10:49:04 +08:00这就让人有点迷糊了,通过一段时间搜寻,发现在时区表达形式上还有不少知识点呢! 时区的偏移量表示法家喻户晓,为了不便各地区本地工夫之间的转换,人们将寰球划分为了24个时区,以格林尼治天文台(GMT)为零时区,往货色两个方向别离有12个时区,所以天然有了以GMT为前缀的时区表示法,如下: GMT+8示意东8区,中国就是应用这个时区,而GMT-8示意西8区,如果格林尼治天文台的本地工夫是2022-03-19的0点,那么GMT+8地区的本地工夫就是2022-03-19的8点,而GMT-8的本地工夫就是往前8小时,即2022-03-18的16点。 留神,下面的各地区本地工夫的表述尽管不同,但它们理论是同一个时刻(相对工夫),要了解本地工夫与相对工夫的区别。 GMT+8正是Java中反对的时区表示法,那为啥Linux中却是GMT-8呢?实际上Linux中的GMT-8也能够写成Etc/GMT-8,这才是它的规范名称,如下: $ TZ='Etc/GMT-8' date -d@1647658144 -Is2022-03-19T10:49:04+08:00DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss XXX");String dateStr = dtf.format(Instant.ofEpochSecond(1647658144).atZone(ZoneId.of("Etc/GMT-8")));System.out.println(dateStr);//输入2022-03-19 10:49:04 +08:00能够发现用Etc/GMT-8的话,Linux与Java的输入都是一样的了,是的,Etc/GMT-8也是一种相似GMT+8的时区示意机制,只不过它的+-号是反的。 Ok,尽管下面的差别弄清楚了,但时区的示意模式还没有介绍完,接着往下看... 除了GMT+8示意形式外,咱们还常常会看到UTC+8这样的示意形式,这是UTC时区表示法。 即生GMT何生UTC?这是因为GMT是以格林尼治天文台为工夫基准,但地球不是完满球体且自转速度在变慢,所以地球自转速度并不平均,这导致以格林尼治天文台为工夫基准是不准的。 为了更精确度量工夫,科学家们创造了UTC工夫,以铯原子跃迁次数来度量工夫,比GMT工夫更精确,为了保障GMT的准确性,每隔几年GMT工夫会做一次调整,以与UTC工夫对齐。 因而,既然有了更精确的UTC,那么就有了以UTC为前缀的时区表示法,如中国时区可应用UTC+8。 各时区偏移量表示法一览表,如下: 偏移量表示法形容GMT+8绝对GMT多8个小时Etc/GMT-8同GMT+8,+-号相同UTC+8同GMT+8GMT+08:00准确到分钟级别GMT+08:00:00准确到秒级别GMT+0800准确到分钟级别,省略冒号GMT+080000准确到秒级别,省略冒号+08:00准确到分钟级别,省略前缀+08:00:00准确到秒级别,省略前缀+0800准确到分钟级别,省略前缀与冒号+080000准确到秒级别,省略前缀与冒号Z示意零时区,等同于GMT、UTC、GMT+0、UTC+0时区的区域表示法除了用偏移量来示意时区,为了不便,人们还按区域/城市的形式来定义时区,如Asia/Shanghai,Asia/Hong_Kong都示意东8区,具体有哪些城市命名的时区,能够在时区数据库中查看。 另外,为了简化区域时区表示法,又定义了一套时区缩写,如CST是中国时区China Standard Time的缩写,能够在时区缩写中查看各种缩写定义。 留神,个别都不倡议应用时区缩写,因为时区缩写的命名常常会反复,比方CST是Central Standard Time(北美中部规范工夫UTC -6)、China Standard Time(中国规范工夫UTC +8)、Cuba Standard Time(古巴规范工夫UTC -5)。 因为不同软件对CST的解释可能不同,导致会呈现工夫相差13或14个小时的状况,这在Java搭配MySQL时经常出现,我还专门写了一篇文章mysql的timestamp会存在时区问题?,对于肯定要应用时区缩写的场景,能够应用香港时区缩写HKT,它不反复且和上海处于同一个时区。 区域表示法形容Asia/Shanghai上海时区,即东8区CST时区缩写,慎用Java中示意时区在Java中和时区相干的类有TimeZone、ZoneId,其中TimeZone是老的时区类,而ZoneId是新的时区类,它有ZoneOffset和ZoneRegion两个子类,别离代表偏移量表示法和区域表示法。 那它们都反对上述的哪些时区写法呢?写个Demo验证一下,如下: ...

March 19, 2022 · 2 min · jiezi

关于时区:技术分享-MySQL一文弄懂时区timezone

作者:胡呈清 爱可生 DBA 团队成员,善于故障剖析、性能优化,集体博客:https://www.jianshu.com/u/a95...,欢送探讨。 本文起源:原创投稿 *爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。 你还在被以下问题困扰吗: MySQL 的装置标准中应该设置什么时区? JAVA 利用读取到的工夫和北京时间差了14个小时,为什么?怎么解决? 曾经运行一段时间的业务,批改 MySQL 的时区会影响曾经存储的工夫类型数据吗? 迁徙数据时会有导致工夫类型数据时区谬误的可能吗? ... 看完这篇文章,你能解决下面所有的纳闷。首先出场的是和时区相干的启动参数和零碎变量。 启动参数&零碎变量如果要在 MySQL 启动时就指定时区,则应该应用启动参数:default-time-zone,示例: --办法1:在启动命令中增加mysqld --default-time-zone='+08:00' &--办法2:在配置文件中增加[mysqld]default-time-zone='+08:00'启动后咱们能够看到管制时区的零碎变量,其中 time_zone 变量管制时区,在MySQL运行时能够通过set命令批改(留神:不能够写在 my.cnf 中): --查看mysql> show global variables like '%time%zone%';+------------------+--------+| Variable_name | Value |+------------------+--------+| system_time_zone | CST || time_zone | +08:00 |+------------------+--------+2 rows in set (0.00 sec)--批改全局时区,所有曾经创立的、新创建的session都会被批改set global time_zone='+00:00';--批改以后session的时区set session time_zone='+00:00';启动参数和零碎变量的可用值遵循雷同的格局: 'SYSTEM' 表明应用零碎工夫绝对于 UTC 工夫的偏移,比方 '+08:00' 或者 '-6:00'某个时区的名字,比方 'Europe/Helsinki',''Asia/Shanghai'' 或 'UTC',前提是曾经把时区信息导入到了mysql库,否则会报错。导入办法:mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -S /tmp/mysqld.sock mysqlsystem_time_zone 变量只有全局值没有会话值,不能动静批改,MySQL 启动时,将尝试主动确定服务器的时区,并应用它来设置 system_time_zone 零碎变量, 尔后该值不变。当 time_zone='system' 时,就是应用的这个时区,示例中 time_zone 就是 CST,而 CST 在 RedHat 上就是东八区: ...

December 23, 2021 · 2 min · jiezi

关于时区:数仓是如何与夏令时愉快的玩耍

摘要:次要讲述夏令时的起源,倒退,标准化以及如何在GaussDB中查问任一时区的夏令时规定。本文分享自华为云社区《DWS如何与“夏令时”欢快的游玩!》,原文作者:leapdb 。 1. 背景介绍为了更深刻理解夏令时,咱们先看一则纠结不休的新闻: 新华网莫斯科7月9日电(记者曹妍)俄罗斯联邦委员会(议会上院)9日通过法案,确定从往年10月26日开始,俄罗斯全国时区将在目前根底上向后推延一个小时。以首都莫斯科为例,目前工夫比格林尼治工夫早4个小时,10月26日之后,莫斯科工夫将比格林尼治工夫早3个小时。 该法案此前曾经通过国家杜马(议会下院)通过,预计俄总统将很快签订法案。这是俄罗斯2011年永恒应用夏令时后再一次变更时制。俄罗斯幅员辽阔,横跨泛滥时区,社会始终就如何应用“正当工夫”争论不休。而这次时制调整,也不是让所有人都很称心。 出于节能思考,原苏联及俄罗斯已经应用过三十年的夏令时。夏令时也称夏时制,指的是在天黑早的春夏季将工夫向前调一个小时,其初衷是为了更充沛地利用阳光。在很多高纬度地区,春夏季太阳升起工夫显著比夏季早,夏时制使人早起早睡,缩小因照明耗费的能源。 俄罗斯自1981年至2011年规定应用夏令时。每年3月最初一个星期日,时钟被拨快一个小时;每年10月最初一个星期日,时钟被拨慢一个小时。以首都莫斯科为例,夏令时间比格林尼治工夫早4个小时,非夏令时间比格林尼治工夫早3个小时。 不过,人们对于夏令时的利弊问题始终存在争议。对于古代社会来说,夏时制是否能节省能源耗费的总量尚无定论。另外,医学专家对于每年两次扭转工夫对人体生物钟影响有多大也各持意见。 从2011年开始,俄罗斯停止使用冬夏时制转换。时任总统2011年下令,当年夏令时完结后不再将钟表调慢一个小时,并永恒应用夏令时间,这意味着俄罗斯全国时区提前一个小时,莫斯科工夫全年都比格林尼治工夫早4个小时。时任总统解释说,频繁调整工夫打乱了人体生物周期,让人感到压力,容易生病。 对于幅员辽阔的俄罗斯来说,永恒应用夏令时能够使不同地区的居民多取得局部阳光。然而俄罗斯大部分地区纬度高,夏季时天黑得比拟晚,依然应用夏令时迫使人们须要在光明中起床下班,给生存造成肯定艰难。 永恒应用夏令时两年多以来,赞成者越来越少。在停止使用夏时制的2011年当年,俄罗斯独立民调机构列瓦达核心的民调显示,63%的受访者反对永恒应用夏令时。不过该考察机构去年10月所做民调显示,赞成此举的受访者比例升高到41%。 2012年至今,曾先后有多名议员提交变更时制的议案。在因各种起因屡次推延探讨后,国家杜马6月终于开始正式探讨变更时制的法案,并确定从永恒应用夏令时变为永恒应用“夏季工夫”。不过这也没有让所有人都称心。稍早前一项民调显示,反对应用夏令时和反对应用“夏季工夫”的受访者各占约1/3,另外有1/3的受访者示意无所谓。 可见,夏令时始终是一个争论不休的事件,到底要不要采纳夏令时,咱们还须要从它的起因及社会倒退水平来细看。 2. 什么是夏令时,夏令时的创立、起因及利弊夏令时,也叫夏时制,夏气节(Daylight Saving Time:DST)又称为“日光节约时制”,在这一制度履行期间所采纳的对立工夫称为“夏令时间”。个别在天黑早的冬季人为将工夫调快一小时,能够使人早起早睡,缩小照明量,以充分利用光照资源,从而节约照明用电。各个驳回夏时制的国家具体规定不同。全世界有近110个国家每年要履行夏令时。 夏令时产生及逐渐被多个国家所采纳的过程: 美国卓越的政治家、外交家——富兰克林(被印在100美元钞票上的人物),在法国任美国驻法国大使期间,因为习惯于过后美国农村贵族的早睡早起生存,早上漫步时看到法国人10点才起床,夜生活过到深夜。这样与法国人交换、工作的工夫就会很少,在他看来这是很浪费时间的。于是他在1784年给《巴黎杂志》的编辑写了一封信,信上说法国人的生活习惯节约了大好的阳光,倡议他们早睡早起,说每年能够节约6千4百万磅蜡烛。 1907年,英国建筑师威廉·维莱特(William Willett)才正式向英国议会提出夏令时的构思,次要是为了节省能源和提供更多的工夫用来训练士兵,但议会通过答辩没有驳回。1916年,德国这个崇尚节约、考究环保的国家,率先站进去尝试,在全国这项打算,后果每天果然能节约下15%的煤、电等资源。英国因为怕德国会从中失去更大的效益,因而紧跟着也采取了夏令时,夏令时节约了约15%的煤气和电力。在英德都驳回夏令时后,法国不久也效仿履行。6 1917年,俄罗斯第一次履行了夏令时。 1918年,加入了第一次世界大战的美国也履行了夏令时,但战后立刻勾销了。1942年,第二次世界大战期间,美国又履行了夏令时。1945-1966年由各州本人确定应用夏令时的起始与完结工夫(日期)。1966年,美国联邦政府从新对立了夏令时的起始与完结工夫(日期)。欧洲大部分国家从1976年,即第四次中东战争导致首次石油危机(1973年)3年后开始履行夏令时。看到了夏令时的好处,接下来,全世界的110个国家先后履行,包含中国。可见,省钱是集体人都喜爱的好事件。 夏令时的长处为什么说,夏令时更够节省能源?家喻户晓,夏天是一年四季中,天黑得较早、天黑得较慢的一个节令,夜晚比拟短,白天比拟长。那么,如果大家可能在夏天早起、并晚睡一个小时,将能充分利用好天然光照资源,那么,就能把照明用电给节省下来。而整个夏天,每人将能节省下巨额能源。 夏令时的毛病当夏令时开始和完结时,人们必须将所有计时仪器调快或调慢,这在以前大家都还应用机械手表或性能手机的年代事件很麻烦的事件。当夏令时完结时,某些工夫会在当天呈现两次,这些都容易形成凌乱。并且影响航班的工夫。夏令时比拟适宜高纬度地区,因高纬度地区太阳在冬季升起的工夫,显著比夏季要早,因而夏令时的履行成果会很好。可是在低纬度地区就不一样了,不仅履行夏令时的成果不大,还会带来许多负面影响。 比方,低纬度地区夏天的夜晚是湿热、闷热的,让人难以入眠。而到了凌晨则比拟凉快舒服,正是安稳睡眠的好工夫,这时候如果要早起,就会升高人们的睡眠品质,导致人的精力萎靡,从而影响工作品质,且有损身材的衰弱,并让人的情绪变得较为焦躁,呈现一系列不良的反馈。而中国,正是一个低纬度国家,所以不适宜履行夏令时。 另外,中国还是一个地区辽阔的国家,因而逾越5个时区,从东向西看,就相差了5个小时。如果再被对立要求提前1个小时起床,像东部地区还好些,可像西部地区,相当于天没亮就起床了……如此,睡眠品质受到影响不说,因为起床时天还没亮,也不可能争光洗刷吃早点,那么该应用的照明用电,照样会耗费。而中国的很多城市在夏天热得像个大火炉,阐明在中国冬季,最耗电的不是用于照明,而是用于制冷!那么,如果中国履行夏令时,尤其是大量风扇、空调呈现并遍及后,要是为节俭照明用电而耗费制冷用电,反而得失相当。 夏令时的本意是早睡早起,充分利用阳光,而调快或调慢所有计时仪器,达到这一目标,无疑是最不失当的,好比自欺欺人。咱们应该做的是调整适宜的作息时间,养成随手关灯等日常节能环保形式。 3. 我国应用夏令时的历史看到了夏令时的好处,全世界的110个国家先后履行夏令时,包含中国,为减速经济倒退、节约能源,便在1986年4月,公布了在全国履行夏令时的告诉,所参照的是国外成熟的相干计划。不过在履行6年之后,也就是1991年时,我国便对夏令时喊停了。 下表是我国以前执行夏令时的时间表: 1935年至1951年,每年5月1日至9月30日。1952年3月1日至10月31日。1953年至1954年,每年4月1日至10月31日。1955年至1956年,每年5月1日至9月30日。1957年至1959年,每年4月1日至9月30日。1960年至1961年,每年6月1日至9月30日。1974年至1975年,每年4月1日至10月31日。1979年7月1日至9月30日。1986年4月13日至9月14日,1987年4月12日至9月13日,1988年4月10日至9月11日,1989年4月16日至9月17日,1990年4月15日至9月16日,1991年4月14日至9月15日。4. GaussDB(DWS)中如何查问某个国家的夏令时4.1. GaussDB(DWS)中时区相干零碎表pg_timezone_names - GaussDB(DWS)中存储时区信息的零碎表 pg_timezone_abbrevs - GaussDB(DWS)中存储时区简称信息的零碎表 4.2. 查问以后(2021/03/05)曾经开始应用夏令时间的时区信息从 pg_timezone_names 查问以后(2021/03/05)曾经开始应用夏令时间的时区信息: postgres=# select * from pg_timezone_names where is_dst='t'; name | abbrev | utc_offset | is_dst -----------------------+--------+------------+-------- Australia/NSW | AEDT | 11:00:00 | t Australia/South | ACDT | 10:30:00 | t Australia/Yancowinna | ACDT | 10:30:00 | t Australia/Broken_Hill | ACDT | 10:30:00 | t Australia/Lord_Howe | +11 | 11:00:00 | t Australia/ACT | AEDT | 11:00:00 | t Australia/Melbourne | AEDT | 11:00:00 | t Australia/Adelaide | ACDT | 10:30:00 | t Australia/LHI | +11 | 11:00:00 | t Australia/Currie | AEDT | 11:00:00 | t Australia/Hobart | AEDT | 11:00:00 | t Australia/Tasmania | AEDT | 11:00:00 | t Australia/Sydney | AEDT | 11:00:00 | t Australia/Canberra | AEDT | 11:00:00 | t Australia/Victoria | AEDT | 11:00:00 | t NZ | NZDT | 13:00:00 | t NZ-CHAT | +1345 | 13:45:00 | t Europe/Dublin | GMT | 00:00:00 | t Eire | GMT | 00:00:00 | t Chile/Continental | -03 | -03:00:00 | t Chile/EasterIsland | -05 | -05:00:00 | t Antarctica/McMurdo | NZDT | 13:00:00 | t Antarctica/South_Pole | NZDT | 13:00:00 | t America/Asuncion | -03 | -03:00:00 | t America/Santiago | -03 | -03:00:00 | t Pacific/Apia | +14 | 14:00:00 | t Pacific/Chatham | +1345 | 13:45:00 | t Pacific/Easter | -05 | -05:00:00 | t Pacific/Auckland | NZDT | 13:00:00 | t Pacific/Norfolk | +12 | 12:00:00 | t(30 rows)从 pg_timezone_abbrevs 查问以后(2021/03/05)曾经开始应用夏令时间的时区信息: ...

July 16, 2021 · 3 min · jiezi

关于时区:关于数据库时区这么多奥秘你都知道么

摘要: GaussDB(DWS)中对于时区相干常识及应用的介绍。本文分享自华为云社区《人人都晓得的时区,背地居然有这么多神秘》,原文作者:leapdb 。 背景介绍时区同其它工业规范一样,标准化过程也是一个简单而漫长的过程。GaussDB(DWS)作为一款面向寰球用户的高性能剖析型数据库产品,对时区的反对也是合乎工业界标准规范的。上面从时区概念,GaussDB(DWS)时区应用及原理,以及一些常见问题等方面介绍一下GaussDB(DWS)。 心愿对大家理解GaussDB(DWS)和时区概念有所帮忙。 概念篇在以前寰球国家都处于农业社会的时候,人们通过每天察看太阳的地位来决定工夫,这就使得不同经度的中央有不同的工夫。过后人们旅行次要靠走和马匹,不同中央工夫不统一的问题没有那么突出。然而到了十九世纪随着火车的创造,人们一天旅行的间隔一下子缩短了很多,到不同的中央因而迫切需要一个通用的办法把各个中央的工夫对立起来。1853年8月12日,美国东部罗德岛州,两辆火车迎头相撞,14人因而死亡。事变的起因在明天看来难以置信——两车工程师的手表差了2分钟。 1863年,首次应用时区的概念。时区通过设立一个区域的规范工夫局部地解决了这个问题。1870年代加拿大铁路工程师弗莱明首次提出全世界按统一标准划分时区。1883年11月18日,美国铁路部门正式施行五个时区。1884年华盛顿子午线国内会议正式通过驳回这种时区划分,称为世界规范时制度。因而,世界标准时区的诞生同其它寰球规范一样也是有一个迟缓的倒退过程。1 名词解释时区 时区是地球上的区域应用同一个工夫定义。以前,人们通过观察太阳的地位(时角)决定工夫,这就使得不同经度的中央的工夫有所不同(中央时)。1863年,首次应用时区的概念。时区通过设立一个区域的规范工夫局部地解决了这个问题。世界各个国家位于地球不同地位上,因而不同国家,特地是货色跨度大的国家日出、日落工夫必然有所偏差。这些偏差就是所谓的时差。 格林尼治规范工夫 GMT(Greenwich Mean Time)是指位于英国伦敦市区的皇家格林尼治天文台的规范工夫,因为本初子午线被定义为在那里通过的经线。因为地球在它的椭圆轨道里的静止速度不平均,地球每天的自转是有些不规则的,而且正在迟缓加速。所以,格林尼治工夫曾经不再被作为规范工夫应用。 世界协调工夫 UTC(Coordinated Universal Time)是通过均匀太阳时(以格林威治工夫GMT为准)、地轴静止修改后的新时标以及以「秒」为单位的国内原子时所综合精算而成的工夫。UTC比GMT来得更加精准。对于现行表款来说,GMT与UTC的性能与精确度是没有差异的。 夏日节约工夫 DST(Daylight Saving Time)又称日光节约时制,在英国称为夏令时间(Summer Time)。是一种为节约能源而人为规定中央工夫的制度,在这一制度履行期间所采纳的对立工夫称为“夏令时间”。个别在天黑较早的冬季人为将工夫调快一小时,能够使人早起早睡,缩小照明量,以充分利用光照资源,从而节约照明用电。各个驳回夏时制的国家规定不同。 时区表示法 如果工夫是以协调世界时(UTC)示意,则在工夫前面间接加上一个“Z”(不加空格)。“Z”是协调世界时中0时区的标记。因而,“09:30 UTC”就写作“09:30Z”或是“0930Z”。“14:45:15 UTC”则为“14:45:15Z”或“144515Z”。UTC工夫也被叫做祖鲁工夫,因为在北约音标字母中用“Zulu”示意“Z”。 UTC偏移量 UTC偏移量是协调世界时(UTC)和特定地点的日期与工夫差别,其单位为小时和分钟。它通常以 ±[hh]:[mm]、±hh、或 ±[hh]的格局显示。所以,如果被形容的工夫比UTC早一小时(例如柏林的夏季工夫),UTC的偏移量将是”+01:00”、”+0100”、或简略显示为”+01”。 各国工夫调整摩洛哥在2010年开始将夏令时开始工夫从6月1日调整为5月2日,完结工夫从8月21日调整为8月8日Tunisia从2010年开始废除夏令时麦夸里岛位于澳洲与南极洲之间决定从2010年4月4日开始不在追随澳洲其它地区一起采纳夏令时,由此产生新的时区Antarctica/Macquarie,简称MIST朝鲜 - 2018年5月5日起调整时区,时区由 GMT+8:30 改为 GMT+9:00,因而平壤的规范工夫于 2018年5月5日星期六 00:00:00 工夫改为 00:30:00 拨快 30 分钟。当格林威治 GMT 规范工夫是凌晨 0:00,平壤工夫就是上午 9:00,与韩国和日本同一时区。朝鲜 - 2015年8月15日起,弃用 GMT+9,“复原”大韩帝国时代的 GMT+8:30 规范工夫,新启用的工夫比原来的工夫慢30分钟,是世界上惟一正在应用这个时区的国家。当格林威治 GMT 是凌晨 0:00,平壤工夫就是上午 8:30。智利 - 2015年1月28日,智利採用了新的官网规范工夫,他们把原来的规范工夫和夏令时间合併成一个,永恒採用夏令时制。新的官网工夫在智利大陆改为 GMT-3,復活节岛则为 GMT-5。俄罗斯 - 2014年10月最初一个星期日 (2014年10月26日) 凌晨开始,永恒採用冬令时制,全国会拨慢一小时。因而莫斯科工夫将由 GMT+4改为 GMT+3。可见,不论是时区还是夏令时都会常常扭转。 2 通用工夫格局次要参考Posix 1003.1 Section 8.3。操作系统中TZ环境变量代表时区信息,次要用于ctime、localtime、mktime等等。TZ时区名字有两种模式:时区名格局和POSIX时区格局。 ...

July 14, 2021 · 5 min · jiezi

关于时区:通用时区你应该知道的数据库时区知识

摘要:咱们深刻理解一下通用时区数据库的组织规定,以及时区和夏令时到底是如何保护的,GaussDB(DWS)中又是如何应用的。本文分享自华为云社区《你应该晓得的时区常识之通用时区数据库》,原文作者:leapdb 。 1. 背景介绍接下来,咱们深刻理解一下通用时区数据库的组织规定,以及时区和夏令时到底是如何保护的,GaussDB(DWS)中又是如何应用的。 2. 通用时区数据库介绍各地的时区和夏令时规定由各自的政府独立治理,他们常常在无限的告诉下进行变更。而且他们历史数据和将来打算也只是断断续续的记录下来。通用时区数据库试图组织和整顿这一畛域相干的数据。 时区数据库,通常称为 tz, tzdata 或 zoneinfo,是一组蕴含大量代码和数据用来示意寰球许多有代表性的地点的本地工夫的历史信息,他会依据各个政体对时区边界和夏令时规定的扭转而不定期的更新。数据库中每一个条目都代表这自1970年以来被宽泛认可的民用时钟的时区信息。该数据库被很多我的项目援用,比方:the GNU C Library (used in GNU/Linux), Android, FreeBSD, NetBSD, OpenBSD, Chromium OS, Cygwin, MariaDB, MINIX, MySQL, webOS, AIX, BlackBerry 10, iOS, macOS, Microsoft Windows, OpenVMS, Oracle Database, 和 Oracle Solaris。GaussDB(DWS)同其它宽泛应用的软件产品一样,也是采纳了IANA保护的通用时区数据。 该数据库由David Olson创建,由Paul Eggert进行编辑和保护。因此有些中央也将其称作Olson数据库。它的显著特色是由Paul Eggert设计的一套通用时区命名规定,每个时区依照“区域/地位”格局,失去一个独有的名称,例如“America/New_York”。英文地名中的空格用下划线“_”代替,连词符“-”只在英文地名自身蕴含时应用。时区数据库目前广泛有两个叫法 Olson时区数据库或IANA时区数据库。 奥尔森(Olson)的数据有所变动,局部起因是奥尔森(AD Olson)行将退休,局部起因是针对维护者的版权侵权提起了诉讼(现已撤销)。2011年10月14日,国内互联网名称与名称调配机构(IANA)接管了时区数据库的保护工作。它会定期进行更新以反映各政治实体对时区边界、UTC 差值和夏令时规定的更改。对tz的更新遵循BCP 175流程进行治理。 常常有一些国家变更时区规定,IANA每年都会公布最新的时区数据和解析源码库。IANA提供三种办法对时区数据库的拜访: https://www.iana.org/time-zonesftp://ftp.iana.org/tz/rsync://http://rsync.iana.org/tz/时区数据库中蕴含各大洲原始的时区定义的文本文件和解析这些文本文件的代码文件。 2.1 通用时区数据库源码相干材料: 源码托管地址:https://github.com/eggert/tz时区数据库的介绍 https://data.iana.org/time-zones/tz-link.html时区数据库原理及应用 https://data.iana.org/time-zones/theory.html下载办法: mkdir tzdbcd tzdbwget https://www.iana.org/time-zones/repository/tzcode-latest.tar.gz #下载最新解析时区文本定义的代码文件wget https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz #下载最新时区定义的文本文件gzip -dc tzcode-latest.tar.gz | tar -xf -gzip -dc tzdata-latest.tar.gz | tar -xf -#或者下载代码+数据的残缺压缩包wget https://www.iana.org/time-zones/repository/tzdb-latest.tar.lz #下载代码+数据的残缺时区数据库lzip -dc tzdb-latest.tar.lz | tar -xf -代码构造: ...

June 22, 2021 · 6 min · jiezi