在Rails中,如何计算第二天上午10点之前的时间,并以小时和分钟报告?
例如,如果是晚上11:30,我会得到" 10小时30分钟"
我正在尝试的事情:
// Get the right day
if (**before 10am**)
days = Time.now
else
days = Time.now + 1.days
//
答案 0 :(得分:1)
你只能使用Rails(ActiveSupport + ActiveView)获得你想要的精确格式,但是你可以接近:
time_now = Time.zone.now
time_tomorrow_at_10 = Time.zone.tomorrow.at_beginning_of_day.advance(hours: 10)
distance_of_time_in_words(time_now, time_tomorrow_at_10) # => about 24 hours
请注意Time.now
的使用几乎总是不正确,因为它不会考虑您应用的配置时区。
答案 1 :(得分:0)
Rails没有精确的帮助。如果您使用distance_of_time_in_words(from_time, to_time)
,则会返回粗略估算值:
distance_of_time_in_words(Time.now, Date.tomorrow + 10.hours)
#=> "1 day"
因此,您可以使用this gem来获得非常精确的时间。
time_ago_in_words(Date.tomorrow + 10.hours)
#=> "22 hours, and 30 minutes"
答案 2 :(得分:0)
尝试创建时间变量。以下不整洁但可行。
tomorrow_10_am = Time.new((Date.today + 1).year,
(Date.today + 1).month,
(Date.today + 1).day,
10
)
time_calculation = ((tomorrow_10_am - Time.now)/1.minute).round
result = (time_calculation / 60).to_s + " hours " + (time_calculation % 60).to_s + " minutes"
# the result is the time difference in hours and minutes format