简明时间 |
时间(Time)是物质的永恒运动、变化的持续性、顺序性的表现,包含时刻和时段两个概念。时间是人类用以描述物质运动过程或事件发生过程的一个参数,确定时间,是靠不受外界影响的物质周期变化的规律。以地球自转为基础的时间计量系统称为世界时系统。时、日、月、年、世纪的时间计量属天文学中的历法范畴。时间是物理学中的七个基本物理量之一,符号为t。在国际单位制(SI)中,时间的基本单位是秒,符号为s。 在2018年11月16日召开的第26届国际度量衡大会对秒的定义:未受干扰的铯-133的原子基态的两个超精细能阶间跃迁对应辐射的9,192,631,771个周期的持续时间(Δvcs)。这个定义提到的铯原子必须在绝对零度时是静止的,而且在地面上的环境是零磁场。在这样的情况下被定义的秒,与天文学上的历书时所定义的秒是等效的。生活中常用的时间单位还有:毫秒(ms)、分(min)、小时(h)、日(d)、月(m)、年(y)等。 现代宇宙学理论认为,宇宙大爆炸“之前”没有时间可言。“永远向前”指时间的增量总是正数。时间表达物体的生灭排列。“时间”简称“时”。时间就是物质的运动和能量的传递。
UTC表示世界协调时间(Coordinated Universal Time)(正在使用),世界协调时间(UTC)=UTC+ 00:00,世界协调时间(UTC)与世界协调时间(UTC)没有时差。
北京位于中国,所属时区是CST(中国标准时间,China Standard Time),北京(Beijing)时间=UTC+ 8:00。中国官方语言是中文,货币是人民币 (CNY)。中国的国际区号是86。 北京所属时区为中国标准时间(缩略语:CST)。
GMT(格林尼治标准时间,英语:GreenwichMeanTime):地球每天的自转是有些不规则的,而且正在缓慢减速,这个时刻可能和实际的太阳时相差16分钟。1972年之前,格林威治时间(GMT)一直是世界时间的标准。1972年之后,GMT(格林尼治时间)已经不再被作为标准时间使用。标准时间──协调世界时(UTC)──由原子钟提供,即为当前的时间基准。
时间定义:从格林威治本初子午线起,经度每向东或者向西间隔15°,就划分一个时区,在这个区域内,大家使用同样的标准时间。
但实际上,为了照顾到行政上的方便,常将1个国家或1个省份划在一起。所以时区并不严格按南北直线来划分,而是按自然条件来划分。另外:由于目前,国际上并没有一个批准各国更改时区的机构。一些国家会由于特定原因改变自己的时区。
全球共分为24个标准时区,相邻时区的时间相差一个小时。
中国时区. 中国幅员辽阔,按国际通行时区划分标准可划分为 东五区 、 东六区 、 东七区 、 东八区(北京、上海) 、 东九区 5个 时区 。
TZ是一组表示地球上各地的时间历史的代码和数据,目前由IANA维护。The Time Zone Database (often called tz or zoneinfo) ,https://www.iana.org/time-zones 数据源,截止本文段编写时间版本为2022g (Released 2022-11-29),每年应该会随着些微的政局变化而变动。
注意:操作系统采用的即是这里的时区信息,而TZ版本是与当前最新的版本保持一致或实时更新的。另外,windows操作系统为了方便吧,则是更进一步的按国家去维护了一个基于政局变化的实时TZ时间在时间设定中,它在显示上是按多城市同在一个时间中标记的。
由于中国并不是只有一个时区,加上近现代的历史原因,也并没有『很多』的时区代码。
中国目前其实有两个时区,除了中国标准时间(北京时间)之外,还有新疆时间(又称乌鲁木齐时间,TZ database 中为 Asia/Urumqi)。尽管官方角度来说中国只有北京时间,但新疆时间至少是半官方的(参见此答案:为什么中国只用一个标准时,而美国本土用四个标准时?)。
又,TZ database 里其实从来没有 Asia/Guangzhou ,只有 Asia/Chongqing 或 Asia/Chungking(重庆) 、 Asia/Harbin(哈尔滨)和 Asia/Kashgar(喀什),且只是因为历史因素民国时的五时区)而存在,现在已链接到 Asia/Shanghai 或 Asia/Urumqi。
所以 TZ database 里的中国时区(不算港澳台)就只有 2 个,Asia/Shanghai 和 Asia/Urumqi。其他几个是为历史因素保留。
之所以是 Asia/Shanghai 而不是 Asia/Beijing,是因为 TZ database 的城市通常选择人口最多的,然后就一直保留下来了。
tz现在放到了Github上维护,我们可以看到,绝大多数修改由保罗·艾格特做出。法律上tz已经由ICANN接管,但仍交给保罗·艾格特全权维护。为保持政治中立,实际时区一律以“区域/地区”来命名。
什么是Unix时间戳(Unix timestamp)?
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time), 是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。 Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。
x1# 打开谷歌浏览器按F12进入开发者模式,进入控制台,输入如下输出时间信息
2console.log((new Date()).getTimezoneOffset())
3输出:
4-480
5
6console.log((new Date()).getTime())
7输出:
81674023412341
9
10console.log(new Date())
11输出:
12Wed Jan 18 2022 14:34:38 GMT+0800 (中国标准时间)
xxxxxxxxxx
101use chrono::{DateTime, Utc};
2
3fn main() {
4 let now: DateTime<Utc> = Utc::now();
5
6 println!("UTC now is: {}", now);
7 println!("UTC now in RFC 2822 is: {}", now.to_rfc2822());
8 println!("UTC now in RFC 3339 is: {}", now.to_rfc3339());
9 println!("UTC now in a custom format is: {}", now.format("%a %b %e %T %Y"));
10}
xxxxxxxxxx
131#!/usr/bin/python3
2import time
3
4# 格式化成2020-03-20 11:45:39形式
5print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
6
7# 格式化成Sat Mar 28 22:24:24 2020形式
8print (time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
9
10# 将格式字符串转换为时间戳
11a = "Sat Mar 28 22:24:24 2020"
12print (time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))
13
不同的编程语言、数据处理软件都会对日期、时间进行封装形成各种格式的数据类型,直观来看是显示为不同的格式。或者也可以认为所有的显示时间格式皆是对标准的解读和执行。
类型名 | 格式 | 说明 |
---|---|---|
ISO 8601 | 一般:2020-12-05T05:33:19Z 东八区:2004-05-03T17:30:08+08:00 | 国际标准化组织的日期和时间的表示方法,这种格式是最常用的格式。 |
RFC2822 | 1992/02/12 12:23:22+0800 | 符合rfc2822格式的时间 |
格林威治标准时间GMT | Fri Jul 20 2018 00:00:00 GMT+0800 (中国标准时间) | 格林威治的子午线作为划分地球东西两半球的经度零度,并作为时间的零点 |
世界协调时间UTC | Mon, 29 Apr 2019 09:52:21 GMT | 经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密 |
Unix时间戳 | 以秒为单位:1607150827 以纳秒为单位:1607150827857990329 | 是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。 |
格式 | 使用说明 | |
---|---|---|
yyyy-MM-dd HH:mm:ss:代表将时间转换为24小时制,例: 2020-01-07 13:21:55 yyyy-MM-dd hh:mm:ss: 代表将时间转换为12小时制,例: 2020-01-07 03:24:21 | 通过数据类型区分24小时制、12小时制 | |
Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。
系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的"Standard BIOS Feture"项中进行设置。
既然Linux有两个时钟系统,那么大家所使用的Linux默认使用哪种时钟系统呢?会不回出现两种系统时钟冲突的情况呢?这些疑问和担心不无道理。首先,Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。
从Linux启动过程来看,系统时钟和硬件时钟不会发生冲突,但Linux中的所有命令(包括函数)都是采用的系统时钟设置。不仅如此,系统时钟和硬件时钟还可以采用异步方式,即系统时间和硬件时间可以不同。这样做的好处对于普通用户意义不大,但对于Linux网络管理员却有很大的用处。例如,要将一个很大的网络中(跨越若干时区)的服务器同步,假如位于美国纽约的Linux服务器和北京的Linux服务器,其中一台服务器无须改变硬件时钟而只需临时设置一个系统时间,如要将北京服务器上的时间设置为纽约时间,两台服务器完成文件的同步后,再与原来的时钟同步一下即可。这样系统和硬件时钟就提供了更为灵活的操作。
时间同步手段:
RFC(Request For Comments)意即“请求评论”,包含了关于Internet的几乎所有重要的文字资料。如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要用到的资料之一,所以RFC享有网络知识圣经之美誉。通常,当某家机构或团体开发出了一套标准或提出对某种标准的设想,想要征询外界的意见时,就会在Internet上发放一份RFC,对这一问题感兴趣的人可以阅读该RFC并提出自己的意见;绝大部分[网络标准](https://baike.baidu.com/item/网络标准)的制定都是以RFC的形式开始,经过大量的论证和修改过程,由主要的标准化组织所指定的,但在RFC中所收录的文件并不都是正在使用或为大家所公认的,也有很大一部分只在某个局部领域被使用或并没有被采用,一份RFC具体处于什么状态都在文件中作了明确的标识。
RFC由一系列草案组成,起始于1969年(第一个RFC文档发布于1969年4月7日,参见“RFC30年”,RFC2555”),RFC文档是一系列关于Internet(早期为ARPANET)的技术资料汇编。这些文档详细讨论了计算机网络的方方面面,重点在网络协议,进程,程序,概念以及一些会议纪要,意见,各种观点等。
“RFC编辑者”是RFC文档的出版者,它负责RFC最终文档的编辑审订。“RFC编辑者”也保留有RFC的主文件,称为RFC索引,用户可以在线检索。在RFC近30年的历史中,“RFC编辑者”一直由约翰·普斯特尔(Jon Postel)来担任,而“RFC编辑者”则由一个工作小组来担任,这个小组受到“互联网协会”(Internet Society)的支持和帮助。
RFC编辑者负责RFC以及RFC的整体结构文档,并维护RFC的索引。[Internet协议](https://baike.baidu.com/item/Internet协议)族的文档部分(由Internet工程委员会“因特网工程师任务组”IETF以及IETF 下属的“因特网工程师指导组”IESG 定义),也做为RFC文档出版。因此,RFC在Internet相关标准中有着重要的地位。
RFC编辑者的职责是由Internet 中的大家提议形成的,所出版的语言也就和Internet一样。IETF和ISOC是代表了世界各地的国际性组织,英语是IETF的第一工作语言,也是IETF的正式出版语言。RFC 2026 "The Internet Standards Process -- Revision 3" 允许RFC翻译成其他不同的语言。但是不能保证其翻译版本是完全正确的。因此,RFC编辑不对非英语的版本负责,而只是指明了哪里有非英语的版本,将这些信息列在WEB页上。