Rails: distance_of_time_NOT_in_words - PullRequest
       6

Rails: distance_of_time_NOT_in_words

2 голосов
/ 12 марта 2010

Как, distance_of_time(Time.now, Time.tomorrow).days = 1 или что-то в этом роде? Если нет, то каков будет хороший способ добиться этого? Я знаю, что есть "from_now", но почему бы не было from_whenever?

1 Ответ

8 голосов
/ 12 марта 2010

Я не знаю встроенного общего решения, но если вам нужно сравнить только несколько дней, вы можете сделать

d = DateTime.now
d2 = DateTime.now.advance(:days => 1)
days_diff = (d2-d).to_i  # i.e., 1

Используя Time s, вы можете сделать то же самое за секунды. Из этих секунд вы можете построить разумную модель разницы недель, дней, часов и минут:

diff = (Time.now - Time.now.advance(:days => 38, :hours=>2, :minutes => 23)).abs
day_diff = diff % 1.week.seconds
weeks = (diff - day_diff) / 1.week.seconds
hour_diff = day_diff % 1.day.seconds
days = (day_diff - hour_diff) / 1.day.seconds
minute_diff = hour_diff % 1.hour.seconds
hours = (hour_diff - minute_diff) / 1.hour.seconds
second_diff = minute_diff % 1.minute.second
minutes = (minute_diff - second_diff) / 1.minute.seconds
fractions = second_diff % 1
seconds = (second_diff - fractions)

s=Struct.new(:weeks, :days, :hours, :minutes, :seconds)
s.new(weeks, days, hours, minutes, seconds)
s.weeks # 5
s.days # 2
s.minutes # 23
s.seconds # 0

(или что-то в этом роде, я на самом деле не тестировал код, но вы поняли - надеюсь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...