您可以更改系统上的纪元吗? [关闭]

Posted

技术标签:

【中文标题】您可以更改系统上的纪元吗? [关闭]【英文标题】:Can you change the epoch on a system? [closed] 【发布时间】:2021-12-27 21:09:47 【问题描述】:

Linux、Unix 和衍生产品使用 UNIX 纪元,而 Windows 使用不同的纪元。

是否可以更改系统使用的纪元?这样像在该系统上获取当前时间戳这样的操作将返回自该特定时期以来的毫秒数?

如果可能(无论多么复杂),查询系统以识别时代的最佳方法是什么?

【问题讨论】:

你为什么要改变纪元?这只是一个有用的约定。你的软件想要计算时间...... @BasileStarynkevitch 一个例子是为私有分布式系统创建一个 UUID 生成器。我在一本系统设计书中阅读雪花的实现,他们使用了一个自定义时代,这让我想到了这个问题 UUID 生成器应该使用随机数。请参阅random(4)、random(3) 并从解决您的问题的bismon 和RefPerSys 中获取灵感。您无需更改 Epoch。另外,不要评论您自己的问题,但请edit。 【参考方案1】:

你能改变系统的纪元吗?

不,但您可以使用像 Glib 这样的可移植框架。并且你可以下载然后研究GNU libc的源代码(时间相关的功能)。

您还可以记录和定义自己的约定,例如使用预处理器技巧(或GNU autoconf)

例如,决定并记录您的时间获取函数返回一个 double 从 2020 年 1 月 1 日开始计算秒数。

还请阅读您的 C 编译器(例如 GCC)和预处理器(例如 GNU cpp)和操作系统(对于 Linux,syscalls(2) 和 time(7) 和 clock_gettime(2)...)的文档

Windows 当然有一个different,但记录在案的 API。

PS。您还可以使用GPP 或(2022 年)RefPerSys(您可以通过电子邮件basile@starynkevitch.net 联系我)生成一些 C 代码

注意。邪恶在细节中。请注意leap seconds。如果您的计算机已连接到 Internet,您可能需要使用一些 NTPD 服务。

【讨论】:

“像 glib 这样的可移植框架”与改变系统时代有什么关系? GPP 或 RefPerSys 与改变系统时代有什么关系?哦,闰秒或 NTP 与更改系统纪元有什么关系? Glib 可在多个操作系统上使用,并提供与时间相关的独立于操作系统的包装器。如果你决定重新实现这些,你需要做很多工作。我建议使用 NTP 服务。否则,计算时间很困难(因为闰秒) 如果你必须重写一个与时间相关的整个库,预算几个月的工作。

以上是关于您可以更改系统上的纪元吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

win2012系统如何关闭休眠

关闭的应用程序上的地理通知

您可以从 msbuild.exe 命令行关闭条件编译符号吗?

在perl中将日期转换为纪元的最佳方法[关闭]

ELK通知系统[关闭]

更改最小化,关闭和最大化窗口的图标