ฟังก์ชันวันที่ / เวลา“ ที่ผ่านมา” ใน Ruby / Rails


88

ฉันสงสัยว่ามีวิธีใน Rails ในการคำนวณการประทับเวลาเช่น - ครึ่งนาทีที่แล้ว 2 นาทีที่แล้ว 1 วันที่ผ่านมา ฯลฯ บางอย่างเช่นการประทับวันที่ตามเวลาจริงของ twitter

ฉันต้องการทราบว่า Ruby / Rails มีฟังก์ชันในตัวสำหรับการแปลงวันเวลาดังกล่าวหรือไม่?

คำตอบ:


191

คุณสามารถใช้ได้:

10.minutes.ago
2.days.since

หรือในมุมมองของคุณคุณมีตัวช่วย:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

ตรวจสอบAPIเพื่อดูรายละเอียดและตัวเลือกเพิ่มเติม


8
ตั้งแต่ Rails 3 ตอนนี้10.minutes.agoแทนที่จะเป็นนาที
cbron

5
หากคุณอยู่นอก Rails require 'active_support'(อย่างน้อยถ้าติดตั้ง Rails 2.X)
JellicleCat

7
ต้องการ 'active_support / ทั้งหมด' หรือหากใช้บันเดิล: gem "activesupport",: require => "active_support"
Alireza Eliaderani

10

คุณสามารถใช้วิธีการที่ใช้ได้จะได้รับเวลาในอดีตหรือในอนาคตโดยใช้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 

ตรวจสอบวิธีการที่มีอยู่ทั้งหมดในคลาสเวลา


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.