首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么kdb+时代的日期是2000.01.01?

为什么kdb+时代的日期是2000.01.01?
EN

Stack Overflow用户
提问于 2017-11-22 17:08:28
回答 3查看 1.5K关注 0票数 3

我是kdb+的新手,我想知道为什么2000.01.01为kdb的时代日期与unix的日期(1970.01.01)不同。

这种差异会影响到与操作系统或其他语言的交互吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-22 17:19:53

KDB+使用不同的时代,因为它遵循不同的标准。KDB+遵循基于朱利安年的J2000国际标准。

UNIX使用POSIX time,最初为32位无符号整数。由于计算的时间是秒的60%,所以32位整数只能工作大约829天,因此必须选择最近的日期。

1971年11月3日的第一版Unix程序员手册将Unix时间定义为“1971年1月1日00:00:00以来的时间,以六分之一秒计算”。

如果在将所选的时代时间导入应用程序之前不确保转换为一个标准,这种差异可能会导致问题。

票数 3
EN

Stack Overflow用户

发布于 2017-11-22 17:22:29

有关与系统/其他语言的交互的问题应该能够通过KDB解析UNIX时代时间戳的事实来处理

来自http://code.kx.com/q/ref/casting/#tok

解析Unix时间戳(从Unix时代开始的秒数),使用9…的字符串11位数: “P”$“10129708800”2290.12.31D00:00:00.000000000 q)"P"$"00000000000“1970.01.01D00:00:00.000000000

票数 3
EN

Stack Overflow用户

发布于 2017-11-22 17:27:54

Kdb+可以在许多不同的操作系统上使用,目前Windows、Linux86、Linux和OSX都可以从kx下载,而以前的solaris是可用的。

从维基百科关于系统时间的页面中,我们可以看到不同的操作系统使用不同的时代、日期和范围。考虑到kdb+支持的两个操作系统,我们可以看到它们具有不同的时代范围:

代码语言:javascript
复制
OS              Epoch or range
-------------------------------------------------
Unix/Posix      1 January 1970 to 19 January 2038
Windows         1 January 1601 to AD 30,828

无论是使用linux还是windows时代,都意味着另一个不匹配。进一步阅读该页还表明,许多其他语言也使用自己独特的时代、日期和范围。

简而言之,没有理由一种语言需要使用它正在运行的操作系统的时代时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47440356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档