Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理不能在int中存储时间的问题?_Java_C++_C_Time - Fatal编程技术网

Java 如何处理不能在int中存储时间的问题?

Java 如何处理不能在int中存储时间的问题?,java,c++,c,time,Java,C++,C,Time,在某些语言中,时间存储为从历元开始的秒数,并存储为整数(如果我错了,请更正我)。所以我们最终会遇到一个点,我们不能将当前时间存储在int中,因为没有足够的位来保存时间 现在我知道这是未来的路,但仍然,现在不值得考虑吗 无论如何,我真正的问题是,我应该总是使用64位来存储时间,还是这是操作系统可能会处理的事情?现代语言使用长数据类型(即java和.net)以毫秒为单位来存储时间。如果您想在将来合理地处理日期,您的担心是正确的。使用无符号32位整数,最多可以存储2^32秒,这比136年多一点 要回答

在某些语言中,时间存储为从历元开始的秒数,并存储为整数(如果我错了,请更正我)。所以我们最终会遇到一个点,我们不能将当前时间存储在int中,因为没有足够的位来保存时间

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


无论如何,我真正的问题是,我应该总是使用64位来存储时间,还是这是操作系统可能会处理的事情?

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

如果您想在将来合理地处理日期,您的担心是正确的。使用无符号32位整数,最多可以存储2^32秒,这比136年多一点

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


这实际上是一个众所周知的问题,类似于Y2K问题。有关更多详细信息,请参阅。

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


如果您使用64位整数来计算秒数,那么您可以安全使用很多年。另外,如果您使用这64位来计算毫秒数,那么在很长一段时间内您仍然可以正常工作。我一点也不希望出现任何问题,因为即使在一年中只需要9位数字就可以写入数据,您也是安全的。

这有时被称为Unix时间。@amit:实际上更安全(也:):)你可以将分辨率改为分钟,范围更广。在C语言中,你应该使用时间,在现代系统中是64位,即使在32位操作系统上也是如此。不过,在嵌入式系统中,你的里程可能会有所不同。64位对于一台像样的时间机器来说是不够的,如果你想对宇宙的热死嗤之以鼻,你需要512位。好吧,你可以用一台基本的64位时间机跳转到未来的5e11年,在那里买一台更好的时间机器。到那时,价格可能已经下降了不少。我刚开始用我的1位时间机器做这件事。我不想撒谎,我想这需要一段时间。-或者-你可以使用浮点,毕竟,当你跳到这么远的时候,你并不真正关心精度。:)使用毫秒是相当过时的。现在纳秒是标准的亚秒时间单位。。。