Các hàm ngày / giờ “Ago” trong Ruby / Rails


87

Tôi đã tự hỏi liệu có cách nào trong Rails để tính toán tem thời gian như - nửa phút trước, 2 phút trước, 1 ngày trước, v.v. Một cái gì đó giống như dấu ngày thời gian thực trên twitter.

Tôi muốn biết liệu Ruby / Rails có chức năng tích hợp sẵn để chuyển đổi ngày-giờ như vậy không?

Câu trả lời:


187

Bạn có thể dùng:

10.minutes.ago
2.days.since

Hoặc trong quan điểm của bạn, bạn có những người trợ giúp:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

Kiểm tra API để biết chi tiết và các tùy chọn khác.


8
Kể từ Rails 3, nó bây giờ 10.minutes.agothay vì phút.
cbron

4
Nếu bạn không ở ngoài Rails, require 'active_support'(ít nhất là nếu Rails 2.X được cài đặt).
JellicleCat

7
request 'active_support / all' hoặc nếu sử dụng gói: gem "activesupport",: request => "active_support"
Alireza Eliaderani,

9

Bạn có thể sử dụng các phương pháp có sẵn để lấy thời gian trong quá khứ hoặc tương lai bằng cách sử dụng ago, sincebí danh cho from_nowvà nhiều phương thức khả dụng

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 

Kiểm tra tất cả các phương thức có sẵn trong lớp Thời gian


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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.