说我想要明天和现在(以小时为单位)之间的区别。
我尝试过的事情:
t = (DateTime.tomorrow - DateTime.now)
(t / 3600).to_i
=> 0
为什么会给0?
我做错了什么?
答案 0 :(得分:15)
这是因为DateTime.tomorrow
没有任何时间价值。这里:
DateTime.tomorrow
# => Wed, 22 Apr 2015
如果您浏览official document for DateTime,则可以看到没有方法tomorrow
。它基本上是Date#tomorrow
。
您可以使用.to_time
获取默认的本地时间00:00:00
DateTime.tomorrow.to_time
# => 2015-04-22 00:00:00 +0530
(DateTime.tomorrow.to_time - DateTime.now) / 1.hours
# => 9.008116581638655
要获得日期之间的确切小时差异:
(DateTime.tomorrow.to_time - Date.today.to_time) / 1.hours
# => 24.0
答案 1 :(得分:2)
试试这个
t = (DateTime.tomorrow.to_time - Date.today.to_time)
t = (t / 3600).to_i
答案 2 :(得分:2)
如果你有两个日期,比如
start_time = Time.new(2015,1, 22, 35, 0)
end_time = Time.new(2015,2, 22, 55, 0)
在https://rubygems.org/gems/time_difference
尝试Ruby的时差宝石def timediff(start, end)
TimeDifference.between(start, end).in_hours
end
并称之为:
timediff(start_time, end_time)
它会起作用。 干杯!
答案 3 :(得分:1)
有DateTime#seconds_until_end_of_day
:
seconds = DateTime.now.seconds_until_end_of_day
#=> 41133
seconds / 3600
#=> 11
distance_of_time_in_words(seconds)
=> "about 11 hours"
答案 4 :(得分:0)
返回有理数。如果您使用round
方法,则可以使用天数:
>> (DateTime.tomorrow - DateTime.now).round
1
或者,如果您想在几小时内获取价值,请使用Time
类:
>> (Date.tomorrow.to_time - Time.now) / 1.hour
11.119436663611111