ruby 2 中的日期时间减法?
DateTime subtraction in ruby 2?
我需要减去两个 DateTime
对象才能找出它们之间的小时差。
我尝试执行以下操作:
a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
puts a - b
我得到了(-1/1)
,classRational
的对象。
所以,问题是,我如何找出两个日期之间的区别?数小时或数天,或其他时间。
当我像那样减去 DateTimes 时,这个 Rational
mean/represent 是什么意思?
顺便说一句:
当我尝试减去 DateTime
与 1 年的差异时,我得到 (366/1)
,所以当我做 (366/1).to_i
时,我得到天数。但是当我尝试减去两个 DateTime
的时差为 1 小时,它给了我 -1
,小时数。那么,如何同时找出返回值(小时、天、年、秒)的含义呢?
如果您将它们作为时间对象进行减法,它将 return 以秒为单位得出结果,然后您可以相应地相乘得到 minutes/hours/days/whatever.
a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
diff = b.to_time - a.to_time # 86400
hours = diff / 60 / 60 # 24
当您减去两个日期时间时,您将得到天数的差值,而不是小时数。
你得到一个Rational
精度类型(有些浮点数不能用计算机精确表示)
要得到小时数,将结果乘以 24,分钟乘以 24*60 等...
a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
(a - b).to_i
# days
# => -1
((a - b)* 24).to_i
# hours
# => -24
# ...
我需要减去两个 DateTime
对象才能找出它们之间的小时差。
我尝试执行以下操作:
a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
puts a - b
我得到了(-1/1)
,classRational
的对象。
所以,问题是,我如何找出两个日期之间的区别?数小时或数天,或其他时间。
当我像那样减去 DateTimes 时,这个 Rational
mean/represent 是什么意思?
顺便说一句:
当我尝试减去 DateTime
与 1 年的差异时,我得到 (366/1)
,所以当我做 (366/1).to_i
时,我得到天数。但是当我尝试减去两个 DateTime
的时差为 1 小时,它给了我 -1
,小时数。那么,如何同时找出返回值(小时、天、年、秒)的含义呢?
如果您将它们作为时间对象进行减法,它将 return 以秒为单位得出结果,然后您可以相应地相乘得到 minutes/hours/days/whatever.
a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
diff = b.to_time - a.to_time # 86400
hours = diff / 60 / 60 # 24
当您减去两个日期时间时,您将得到天数的差值,而不是小时数。
你得到一个Rational
精度类型(有些浮点数不能用计算机精确表示)
要得到小时数,将结果乘以 24,分钟乘以 24*60 等...
a = DateTime.new(2015, 6, 20, 16)
b = DateTime.new(2015, 6, 21, 16)
(a - b).to_i
# days
# => -1
((a - b)* 24).to_i
# hours
# => -24
# ...