Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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
32位ruby 1.9.2p290时间can';我不能处理2038?_Ruby_Linux_Year2038 - Fatal编程技术网

32位ruby 1.9.2p290时间can';我不能处理2038?

32位ruby 1.9.2p290时间can';我不能处理2038?,ruby,linux,year2038,Ruby,Linux,Year2038,32位ruby 1.9.2p290(我必须使用)似乎很难在当前时间的基础上增加25年(但不是24年) now = Time.now more_time = (24*365*24*60*60) puts "more_time.class = #{more_time.class}" later = now + more_time now = Time.now more_time = (25*365*24*60*60) puts "more_time.class = #

32位ruby 1.9.2p290(我必须使用)似乎很难在当前时间的基础上增加25年(但不是24年)

now = Time.now
more_time = (24*365*24*60*60)
puts "more_time.class = #{more_time.class}"
later = now + more_time

now = Time.now
more_time = (25*365*24*60*60)
puts "more_time.class = #{more_time.class}"
later = now + more_time
产生:

more\u time.class=Fixnum

more\u time.class=Fixnum

ruby_time.rb:11:in`+':time+788400000.000000超出ruby_time的时间范围(RangeError)。rb:11


我遇到2038年的问题了吗?64位ruby 1.9.2-p290没有这个问题。

32位ruby使用32位表示时间,因此它的有效范围是从
13 Dec 1901 20:45:54 UTC
19 Jan 2038 03:14:07 UTC
,因为这些是可以用32位表示的最小/最大有符号整数值,时间0是unix历元时间(
1970年1月1日UTC 00:00:00

64位Ruby使用64位来表示时间,因此它的有效范围基本上是任何东西

要解决这个问题,您可以研究使用这个类,它不限于32位