как рассчитать разницу во времени в рельсах - PullRequest
1 голос
/ 30 августа 2011

У меня есть поле, которое является отметкой времени. Я хочу рассчитать разницу во времени между этой отметкой времени и текущим временем и показать время как нечто читаемое человеком, например

2 days remaining #don't show hours when > 1 day is remaining

раз, когда осталось менее 1 дня, у меня будет тикер обратного отсчета JavaScript.

Ответы [ 2 ]

0 голосов
/ 20 октября 2011

Попробуйте это:

if end_date < Time.now # ended already
  return 'Ended'
elsif end_date > (Time.now + 1.day) # more than 1 day away
  diff_in_days = ((end_date - Time.now).to_i / 1.day)
  days_string = diff_in_days.to_s
  days_string += (diff_in_days > 1) ? ' Days' : ' Day'
  return days_string
else # ending today
  diff_in_HMS = Time.at(end_date - Time.now).gmtime.strftime('%R:%S')
  return diff_in_HMS
end

Он печатает «X Days», если end_date>> 1 день, HH: MM: SS, если заканчивается сегодня, и «Ended», если end_date был в прошлом.

0 голосов
/ 30 августа 2011

Я построил библиотеку dotiw, чтобы сделать именно это: http://github.com/radar/dotiw.

Это основано на методе distance_of_time_in_words в Rails, который недостаточно точен, поэтому я сделал его более точным с dotiw.

...