获取第二天上午10点的小时和分钟

时间:2014-11-13 09:47:41

标签: ruby-on-rails ruby

在Rails中,如何计算第二天上午10点之前的时间,并以小时和分钟报告?

例如,如果是晚上11:30,我会得到" 10小时30分钟"

我正在尝试的事情:

// Get the right day 

if (**before 10am**)
  days = Time.now
else
  days = Time.now + 1.days

// 

3 个答案:

答案 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