Fungsi tanggal / waktu “lalu” di Ruby / Rails


88

Saya bertanya-tanya apakah ada cara di Rails untuk menghitung cap waktu seperti - setengah menit yang lalu, 2 menit yang lalu, 1 hari yang lalu, dll. Sesuatu seperti cap tanggal waktu nyata twitter.

Saya ingin tahu apakah Ruby / Rails memiliki fungsi built-in untuk konversi tanggal-waktu seperti itu?

Jawaban:


191

Kamu dapat memakai:

10.minutes.ago
2.days.since

Atau dalam pandangan Anda, Anda memiliki pembantu:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

Periksa API untuk mengetahui detail dan opsi lainnya.


8
Pada Rails 3 sekarang 10.minutes.agobukan menit.
cbron

4
Jika Anda berada di luar Rails, require 'active_support'(setidaknya jika Rails 2.X diinstal).
JellicleCat

7
membutuhkan 'active_support / all' atau jika menggunakan bundle: gem "activesupport",: require => "active_support"
Alireza Eliaderani

9

Anda dapat menggunakan metode yang tersedia untuk mendapatkan waktu di masa lalu atau masa depan menggunakan ago, sincealias untuk from_nowdan banyak metode yang tersedia

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 

Periksa semua metode yang tersedia di kelas Waktu


2

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.