如何处理无法在整数中存储时间

How to handle not being able to store time in an int?

本文关键字:整数 存储 时间 何处理 处理      更新时间:2023-10-16

在某些语言中,时间存储为纪元的秒数,并存储在 int 中(如果我错了,请纠正我)。因此,我们最终将达到无法将当前时间存储在 int 中的点,因为没有足够的位来保存时间。

现在

我知道这是未来的路,但是,现在不值得考虑吗?

无论如何,我

真正的问题是,我应该始终使用 64 位来存储时间还是操作系统可能会处理?

如果您想处理未来合理的日期,您的担忧是有效的。使用无符号 32 位整数,您最多可以存储 2^32 秒,即 136 年多一点。

为了回答您的问题,是否应使用 64 位或 32 位来存储秒数取决于应用程序的需求。如果要存储普通应用程序的日历约会,32 位可能就足够了。另一方面,如果你正在建造一台时间机器,使用 64 可能是一个更安全的选择。

这实际上是一个众所周知的问题,类似于Y2K问题。有关更多详细信息,请参阅 http://en.wikipedia.org/wiki/Year_2038_problem。

现代语言使用长数据类型(即.java和.net)以毫秒为单位存储时间。

当纪元(1970-01-01 00:00 GMT)的秒数不再适合 32 位整数时,某些平台/编程语言会遇到问题。这并不适用于所有平台,也不适用于所有编程语言。

如果您使用 64 位整数来计算秒数,那么您将安全多年。此外,如果您使用这 64 位来计算毫秒数,那么您仍然可以在很长一段时间内使用。我根本不期望有任何问题,因为即使您只需要九位数字来写年份,您也是安全的。