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_time.class = Fixnum
more_time.class = Fixnum
ruby_time.rb:11:in `+’: time + 788400000.000000 out of Time range (RangeError) from ruby_time.rb:11
我遇到了2038年的问题吗? 64位ruby 1.9.2-p290我没有这个问题.
解决方法:
32位Ruby使用32位来表示时间,因此它具有从1901年12月13日20:45:54 UTC到2038年1月19日03:14:07 UTC的有效范围,因为它们是可表示的最小/最大有符号整数值. 32位,时间0为unix纪元时间(1970年1月1日00:00:00 UTC).
64位Ruby使用64位来表示时间,因此它具有基本上任何东西的有效范围.
要解决这个问题,您可以考虑使用DateTime
类,它不限于32位.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。