许多人都知道,自 1970 年以来,Linux 时间以秒为单位存储。这个时间字段在 2032 年左右会爆炸,不再可用。我正在考虑编写一个新应用程序,用于跟踪使用 Linux 内核 3.18 的 Android 7.1.1 中文件上次读取的时间。
我还没有做过任何与时间(日期)相关的编程/记录保存,我想知道是否有一种新的 64 位整数格式或我现在可以使用的东西。我会将向后兼容函数写入当前在 Ubuntu 中使用的 32 位秒字段。
请注意,这不是关于 Android 的问题,这是题外话。我将使用 Linux 4.14 或 5.3 在 Ubuntu 中开发我的 bash 脚本,通过 USB 访问 Android 中使用的 Linux 3.18。
我知道 Linux 的爆发还要 19 年,但我希望我的东西能经得起未来的考验,而不必在以后进行更改,或者至少使将来的代码更改更容易。由于我已经编码了 30 多年,因此很有可能 20 年后我仍然会喜欢编码。
一些例子维基百科:
- Windows:1601 年 1 月 1 日至 9 月 14 日 30,828
- Unix 和 POSIX:1970 年 1 月 1 日至公元 292,277,026,596 年
我认为 Unix 和 POSIX 格式的 2920 亿年将比太阳寿命更长,这意味着到那时我们将离开地球,并拥有一个新的日历。而且我的程序很有可能在 2920 亿年后过时。
在哪里可以找到未来 Linux 时间格式的标准?或者至少是拟议标准的简短列表?
答案1
在哪里可以找到未来 Linux 时间格式的标准?
$ cat xx.c
#include <stdio.h>
#include <time.h>
#include <sys/stat.h>
void
main(void) {
auto time_t t;
auto struct stat s;
printf("%d %d\n", (int)sizeof(t), (int)sizeof(s.st_mtime));
}
$ cc xx.c && ./a.out
8 8
类型(time_t)已经是 8 个字节,与您列出的“Unix 和 POSIX”标准相对应。
什么让您认为 Linux 需要定义一个新的标准?