java比较时间的先后utc时间,日期、时间与UTC

传统日期的局限

人类在对时间的测定上存在一个进化的过程,最早通过观察天体的自转与公转来确定时间,比如地球自转一周为一天,月球公转一周为一月,地球公转一周为一年。

我们先考虑天和年,他们之间就像数学一样存在一个粗糙的进制方案——365.25天为1年。这种进制就像十进制数一样可以有效压缩日期的长度,比如我们可以记某某王朝存在了 300年,而不是 109575 天。

而说他粗糙是因为进制不是整数,这在使用上多有不便,没人喜欢在大白天突然过年吧。因此制定历法(公历)的人做出妥协:允许计时出现不超过 1 天的偏差,以实现整数进制,即 365天进一年。当累计偏差达到一天时在 2 月最后一天之后再加一个闰日。我们通常管这样的年叫做闰年。

此时,天是一个确定的时间单位,而年不是了,因为一年可能有 365 天也可能有 366 天。

作为公立的格里历在闰日的规则上更精确一些,可参考 wiki: 格里曆

以格林尼治午夜为 0 点,以观察太阳为手段计时的标准叫做 世界时(UT)。此时的秒定义为一天的 1 / 86400。

另一套计时标准

后来人们发现靠天文观测来计时不是那么准,尤其地球自转和公转的速度居然不是恒定的。于是在 1967 年人们重新定义了秒,把它从世界时一天的 1/86400 改为了

铯133原子基态的两个超精细能级间跃迁对应辐射的9,192,631,770个周期的持续时间

铯原子钟 对秒的重新定义带来了一种新的计时标准——国际原子时(TAI),同时也带来了像 年 和 日 之间“粗糙进制”的问题:现在世界时的一天也不是标准的 86400 秒了。国际原子时从 1958年初开始计时,到 2016 年 11月已经比世界时快了 37s。(地球转的慢了)

UTC

现在电信业遇到了一个麻烦,本身他们需要使用原子钟计时,但又不得不服从世界时,毕竟只要人类还生活在地球上,时间就都要向太阳对齐。人们决定再定义一个时间,叫做 UTC,比世界时的 UT 多了一个 Coordinated,其协调的就是原子时和世界时之间的差距。

协调的方案就像闰日一样,人们选择了闰秒。人们把 UTC 1972-01-01 00:00:00 向国际原子时的 00:00:10 做了一次对齐(原子时是不闰秒的),然后以原子秒为基础计时,同时监测与世界时的差距,适时闰 1s 或 -1s。一般闰秒的时刻选择在6月的最后一秒或12月的最后一秒。

因为原子秒的长度定义本身就参考了上百年观测的平均太阳日时间,所以这个误差其实相当低,从1972年到现在总共才闰了 27 次,且全部是 +1s。即最近地球转的比过去慢。(注意闰秒其实是随机而不可预测的,最近几十年转的慢,也许过几年就转得快了,到时候就要 -1s)

对于 UTC 的时间是哪个时区的问题,因为它总是向世界时对齐,而世界时是格林尼治时间,所以 UTC 也就是向格林尼治时间对齐。

UNIX 时间

UNIX 时间是以 UTC 时间 1970-01-01T00:00:00 为原点到现在的秒数偏移量。但因为编程的问题,它不考虑闰秒。所以它只是在跳秒的时刻上与原子时同步,而累计的秒数其实是世界时的秒数。

对于程序来说,因为闰秒的不规律性,如果要计算当前到 1970-01-01T00:00:00 的原子秒数,就需要额外存储每一次闰秒的记录。又因为人们日常需求中其实并不关心闰秒,使用原子秒记录反而会产生很多麻烦,所以就这么用了。

闰秒带来的时刻问题,比如有的系统会产生 23:59:60 这样的时刻,或者有的系统会走两次 23:59:59,就需要用户自己去处理了。而一般情形的编程下,可以认为 UNIX 时间与 UTC 时间是等价的。UTC 闰秒在计算机里也通常会被舍弃,不然的话每次计算时间还要依赖 ntp 服务器这是不现实的。即在 Python 里:

>>> (datetime.utcnow() - datetime.utcfromtimestamp(0)).total_seconds() == time.time()

>>> True

而在现实中上式不等。到现在为止,应该有 27s 的差距。

转载至链接:https://my.oschina.net/lionets/blog/1923075

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php主题怎么增加导航页,教你如何给wordpress主题添加导航栏

烈火建站学院转载 不是所有的wordpress主题都自带导航栏的,我早就想自行添加一个。昨天的标题前有“GOOGLE是个好老师”这个句子,今早赶紧删了,倒不是不认同,而是觉得在添加导航栏这个事情上还真不是那么回事情。以前我就说过&…

python 画线条进行到指定区域更改颜色,使用Colormaps在matplotlib中设置线条的颜色...

线条样式,标记和定性颜色的组合,来自matplotlib:import itertoolsimport matplotlib as mplimport matplotlib.pyplot as pltN 8*410l_styles [-,--,-.,:]m_styles [,.,o,^,*]colormap mpl.cm.Dark2.colors # Qualitative colormapfor …

asp php 用户登录,一个简单的asp.net 单点登录实现

以下是实现的效果图:首先上图的点击火车订票链接,就会打开http://学生信息平台网站/LoginToTrainSite.asa页面。LoginToTrainSite.asa页面的大致代码如下:Response.Buffer TrueResponse.ExpiresAbsolute Now() - 1Response.Expires 0Respo…

ajax怎么发送数据给php,ajax怎么发送数据给php

在网上看了很久,发现数据的利用ajax提交数据到后台其实很简单,但是很多讲解的并不清楚,对于初学者来说,很多真的是看着有点糊涂,拿来直接用,又想去了解怎么回事,其实利用ajax提交数据到后台是非…

oracle10无法安装打开,64位win10添加oracle odbc驱动时提示无法加载oracle怎么办

对于win10 64位系统添加oracle odbc驱动时提示无法加载oracle的问题相信部分用户都应该有所了解了,但是对于如何解决这个问题的实际操作的用户来说可能不多,因此,为了帮助出现这种问题的用户,小编在这里就来教大家64位win10添加or…

Oracle 11g ora 15018,oracle 11gR2 RAC root.sh 错误 ORA-15072 ORA-15018

Oracle 11gR2 RAC安装Clusterware结束, 在第二个节点执行root.sh脚本的是报如下错误:DiskGroup DATA1 creation failed with the following message:ORA-15018: diskgroup cannot be createdORA-15072: command requires at least 1 regular failure gro…

oracle kepserve,Kepware.KEPServer\KEPServerEX_V5操作简介含opc quick client 连接测试

【实例简介】Kepware.KEPServer\KEPServerEX_V5操作简介含opc quick client 连接测试3.開魯 KEPServereX的管理視窗請從「開始」->「所有程式」->「 Kcpwarc」->「 KEPScrvcrEX5」->「 KEPScrvcrEX5Configuration I來動或在電腦桌面右下方的 System Tray圖示画( KE…

oracle 批量导出sequence,如何单独导出导入sequence?

可以用工具导出或者自己写个procedure直接把sequence的sql 存到1个文件中,然后执行文件即可procedure dump_all_sequences isl_file_handle UTL_FILE.file_type;beginl_file_handle : UTL_FILE.fopen(PLSQL_OUTPUT,all_sequences.sql,W,32000);for c in (select seq…

linux命令fdisk,Linux fdisk 命令使用详解

一、fdisk 的介绍fdisk - Partition table manipulator for Linux ,译成中文的意思是磁盘分区表操作工具;本人译的不太好,也没有看中文文档;其实就是分区工具fdsik 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统,…

linux获取文件的md5,linux shell 获取文件md5的命令linux操作系统 -电脑资料

下面我给各位朋友总结一下在linux中利用shell命令来获取文件md5及遍历目录下所有文件的md5的例子,希望此例子对各位同学会有所帮助,获取文件的MD5值:$ md5sum linuxmint-12-gnome-dvd-32bit.iso|cut -d -f1得到的MD5值:ee3d6e2c…

Linux用户登录自动拷贝文件,linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录...

原文出处: http://blog.csdn.net/five3/article/details/8648484最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登录还是要配置服务和参数,又不确…

linux postgresql默认安装目录,postgresql - 三种安装方式(示例代码)

最近接触了postgresql的安装,和大家分享一下。一、简 介PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(…

linux不显示无线网卡驱动安装失败,Linux_Ubuntu无线网卡驱动安装方法,安装了Ubuntu后发现没有无线网 - phpStudy...

Ubuntu无线网卡驱动安装方法安装了Ubuntu后发现没有无线网络,搜索不到WiFi,但是正常情况下安装Ubuntu后,系统会自动安装无线网卡驱动,并且开机自动连接无线网。查了一下,原来我的网卡是非主流网卡,Ubuntu不…

linux消息总线日志,linux – 解密继续mpt2sas系统日志消息

摘要我在syslog中收到这些神秘的消息,因为我安装了一些新的硬件,我无法弄清楚问题是什么,如果它是严重的,或者该怎么做.它们来自新的SATA HBA,它们遵循一种模式.我会得到几条第一条消息,然后是5-30秒之后的第二条消息.它们都是以相同的秒数记录的blob,每个的确切数量在大约2到3…

linux中央服务器,如何在Linux上搭建一个Git中央仓库

前言:本教程只面向那些个人开发者,想要自己在linux上搭建一个git中央仓库用来上传发布自己的项目。但是对于团队来说可能有更高的要求,可以使用gitlab搭建一个可视化的类似github的版本管理系统测试环境我使用的linux版本是Centos7&#xff0…

linux桌面发展方向,观点|Linux 桌面的发展之路!

Ken Starks 在 fossforce.com 网站上问 你们是如何优化 Linux 的?,我很高兴他问了这个问题,因为我有话要说!对我来说,Linux 桌面就是一连串的承诺,但是这些承诺却总是无法兑现。它在每个版本发布后都会说“…

arm linux 脚本 排序,arm-linux连接以及连接脚本

前言:arm linux的连接工具可以使用arm-linux-ld,在进行连接时可以使用-T命令采用脚本控制,如不指明脚本,则使用默认的脚本文件,参见arm-linux-ld的缺省linker script。一.目标文件格式与类型本文引用地址:h…

linux常见基础服务,常用的linux命令的基本使用(一)

序号命令对应英文作用01lslist查看当前文件夹下的内容02pwdprint name of of current/working directory查看当前所在文件夹03cd[目录名]change directory切换文件夹04touch[目录名]touch如果文件不存在,新建文件05mkdir[目录名]make directory创建目录06rm[文件名]…

vlc-qt编译 linux,记录一次搞vlc官方源码中Qt示例工程的过程,文件路径对话框

代码目录:E:\vlc-3.0.12\doc\libvlc\QtPlayer编译成立,但是libvlc_new返回NULL老子就是要搞他,在网上的其他人成功的代码帮助下要把他搞成(背景是:老板要在Qt界面里播放视频文件,本身知道opencv会更简单点,但是想自己去根据文档再熟悉vlc sdk的使用)libvlc_new返回NULL原因是pl…

linux kernel 调度,在Linux中,实时调度_kernel_开发99编程知识库

在實時調度,fifo和RR不具有完全相同的含義他們在非實時調度。 但是,進程總是在FIFO方式中選擇的時間量程SCHED_FIFO不限制不同的時間量程SCHED_RR 。schED_FIFO進程不能preempt SCHED_RR進程相同的優先順序。sched_setscheduler( 2 ) linux手冊頁。。。&…