Функции даты и времени "Аго" в Ruby/Rails
Мне было интересно, есть ли способ в Rails рассчитать отметку времени - полминуты назад, 2 минуты назад, 1 день назад и т.д. Что-то вроде твиттера в реальном времени.
Я хочу знать, имеет ли Ruby/Rails встроенную функцию для такого преобразования даты и времени?
Ответы
Ответ 1
Вы можете использовать:
10.minutes.ago
2.days.since
Или в ваших представлениях у вас есть помощники:
distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)
Для получения более подробной информации и дополнительных параметров просмотрите API.
Ответ 2
Вы можете использовать доступные методы, чтобы получить время в прошлом или будущем, используя ago
, since
псевдоним для from_now
и многие доступные методы
Time.current
#=> Tue, 20 Sep 2016 15:03:30 UTC +00:00
2.minutes.ago
#=> Tue, 20 Sep 2016 15:01:30 UTC +00:00
2.minutes.since
#=> Tue, 20 Sep 2016 15:05:30 UTC +00:00
1.month.ago
#=> Sat, 20 Aug 2016 15:03:30 UTC +00:00
1.year.since
#=> Wed, 20 Sep 2017 15:03:30 UTC +00:00
Проверьте все доступные методы в Time class
Ответ 3
distance_of_time_in_words:
from_time = Time.now
distance_of_time_in_words(from_time, from_time + 50.minutes) # => about 1 hour
distance_of_time_in_words(from_time, 50.minutes.from_now) # => about 1 hour
distance_of_time_in_words(from_time, from_time + 15.seconds) # => less than a minute
distance_of_time_in_words(from_time, from_time + 15.seconds, include_seconds: true) # => less than 20 seconds
time_ago_in_words:
time_ago_in_words(3.minutes.from_now) # => 3 minutes
time_ago_in_words(3.minutes.ago) # => 3 minutes
time_ago_in_words(Time.now - 15.hours) # => about 15 hours
Ответ 4
В любом случае, дегуманизировать его, чтобы получить фактическую метку времени?
Например: "1.hour.ago 25.minute.ago 1.second.ago" обратный отсчет Пт, 18 октября 2019 г. 16:09:10 UTC +00: 00
информация сайта имеет вид "17h 21m 1s ago", необходимо преобразовать его в db datetime utc
мне удается это сделать:
"17h 21m 1s ago".gsub("h", '.hour.ago'). Gsub ("m", ".minute.ago '). Gsub (" s ago ",'.second.ago ')
==> "17.hour.ago 21.minute.ago 1.second.ago"
Но как удалить строковую часть и преобразовать ее в метод datetime? Попытка разбора даты и времени не сработала.
Любая помощь? Спасибо