微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

时间 – 在Unix时代和GPS时代之间

Unix时代(1970年1月01日)和GPS时代(1980年1月06日)之间的一秒钟的数量是多少?

我已经看到来自网络上的多个来源的多个答案.一个阵营声称答案是315964800,另一个声称是315964819.我一直认为是315964800,但现在不太确定.

我刚刚发现我的软件基线在过去八年一直使用315964819.当我们将嵌入式设备与其他设备集成在一起时,我很难理解19秒的关闭状态,没有人注意到.

我认为把315964819放在代码基线中的人必须错误地使用TAI偏移量(19秒).

从我的理解,Unix时间不包括闰秒,这将告诉我,315964800是两个纪元之间的刻度数.然后我想想Unix时间如何处理闰秒.当插入闰秒时,它只会重复刻度计数,并且在1970年至1980年之间插入了19个闰秒…我开始怀疑重复的蜱虫是否重要.我不这么认为,但是这个代码的历史中有人认为是这样,似乎工作….

我的这个短短的一段时间我将要改变这个产品的黑暗时代的一个常数,这与时间有关,这对于平台很重要,从现在到我所相信的更准确,我想要从更多知识渊博的人那里得到一些竖起大拇指.

有人有权威请登入吗?

315964800 camp

315964819 camp

还要注意的是,我只是问到关于Unix的时代到GPS的时代.我相信自己的GPS时代已经适当地覆盖了我们的闰秒.

您所说的不同价值是由1970年至1980年的闰秒混合造成的.
正确的偏移值为315964800秒.

说明:

UTC和GPS时间每18个月平均(平均)减一秒.
这被称为闰秒,以UTC时基介绍,需要调整地球旋转的变化.

GPS时间未被闰秒调整.

目前(2013)有16s的抵消:
GPS时间UTC = 16秒

Unix时间是时间格式不是时间参考.
它表示自1.1.1970 UTC以来的毫秒数(或秒).
理想情况下,您的系统时间与UTC由TimeServer(NTP)同步.

要转换并获得您的偏移,您应该使用固定的偏移量:(6.1.1980 UTC – 1.1.1970 UTC)

然后将GPS的当前值添加到UTC偏差(当前为16s).
例如,可以配置该值,或从GPS设备读取当前偏移量(他们知道UTC和GPS时间之间的差异)

你所说的不同的价值是由1970年至1980年的闰秒混合造成的.
不要这样做,单独处理它们.

这个java程序:

SimpleDateFormat df = new SimpleDateFormat();
df.setTimeZone(TimeZone.getTimeZone("UTC"));

Date x = df.parse("1.1.1970 00:00:00");
Date y = df.parse("6.1.1980 00:00:00");

long diff = y.getTime() - x.getTime();
long diffSec = diff / 1000;

System.out.println("diffSec= " + diffSec);

输出此值:

diffSec= 315964800

所以这是GPS时间开始之间1.1.1970 UTC和6.1.1980 UTC之间的正确偏移.那么你必须更正16秒,这是6.1.1980和今天介绍的,以计算当前UTC时间的GPS时间.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2280端口映射到公网,发现经常被暴力破解,自己写了个临时封禁ip功能的脚本,实现5分钟内同一个ip登录密码错误10次就封禁这个ip5分钟,并且进行邮件通知使用步骤openwrt为19.07.03版本,其他版本没有测试过安装bashmsmtpopkg
#!/bin/bashcommand1&command2&wait从Shell脚本并行运行多个程序–杨河老李(kviccn.github.io)
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/phpls-ls 2.编辑修改.bash_profile文件(没有.bash_profile文件的情况下回自动创建)sudovim~/.bash_profile在文件的最后输入以下信息,然后保存退出exportPATH="/Applications/MAMP/bin/php/php7.2.20/b
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如zh_CN之类的语言包,进行中文语言包装:apt-getinstalllanguage-pack-zh-hans3、安装好后我们可以进行临时修改:然后添加中文支持: locale-genzh_CN.UTF-8临时修改> export LC_ALL='zh_CN.utf8'> locale永久
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexadecimalbash2#[0~1]0[0~7]0x[0~f]or0X[0~f]perl0b[0~1]0[0~7]0x[0~f]tcl0b[0~1]0o[0~7]0x[0~f]bashdifferentbaserepresntationreference2.StringlengthLanguageStr
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全命令补全方法:yum-yinstallbash-completionsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)echo"source<(kubectlcompletionbash)">>~/.bashrc 
参考这里启动jar包shell脚本修改过来的#!/bin/bash#默认应用名称defaultAppName='./gadmin'appName=''if[[$1&&$1!=0]]thenappName=$1elseappName=$defaultAppNamefiecho">>>>>>本次重启的应用:$appName<
#一个数字的行#!/bin/bashwhilereadlinedon=`echo$line|sed's/[^0-9]//g'|wc-L`if[$n-eq1]thenecho$linefidone<1.txt#日志切割归档#!/bin/bashcd/data/logslog=1.logmv_log(){[-f$1]&&mv$1$2
#文件增加内容#!/bin/bashn=0cat1.txt|whilereadlinedon=[$n+1]if[$n-eq5]thenecho$lineecho-e"#Thisisatestfile.\n#Testinsertlineintothisfile."elseecho$linefidone#备份/etc目录#
# su - oraclesu: /usr/bin/ksh: No such file or directory根据报错信息:显示无法找到文件 /usr/bin/ksh果然没有该文件,但是发现存在文件/bin/ksh,于是创建了一个软连接,可以规避问题,可以成功切换到用户下,但无法执行系统自带命令。$. .bash_profile-ksh: .: .b