2011-09-10 34 views
25

Tôi đang gọi ngày mà một bản ghi được tạo trong một ứng dụng cơ bản chạy Rails 3.1.Thay đổi định dạng của created_at trong Rails 3.1?

<%= @issue.created_at %> 

Các đầu ra phía trên dấu thời gian sau:

2011-09-10 14:44:24 UTC 

cách đơn giản nhất làm thay đổi cách hiển thị này là gì? Tôi muốn một cái gì đó như thế này:

10 Sept. 2011 

và sau đó bằng cách nào đó gọi nó một lần nữa với một định dạng khác nhau:

14:44 

vì vậy tôi có thể gọi nó hai lần và hợp nhất hai với nhau:

10 Sept. 2011 
14:44 

Lý do tôi muốn gọi nó hai lần thay vì tạo người trợ giúp để định dạng ngày/giờ hai dòng là cho phép tôi gọi ngày ở một số địa điểm và chỉ là thời gian ở những nơi khác.

Trả lời

13

Tôi sẽ sử dụng I18n. Hãy xem một số ví dụ http://guides.rubyonrails.org/i18n.html#adding-date-time-formats. Đó là cách định dạng ngày và giờ linh hoạt và rõ ràng.

+1

Sử dụng ví dụ trong liên kết đó tôi hiện có <% = @ issue.created_at,: format =>: short%>, dẫn đến lỗi Ngoại lệ. Bất kỳ ý tưởng? – dannymcc

+2

hãy sử dụng phương thức trợ giúp l() –

76

Điều đơn giản nhất để làm là để sử dụng chức năng strftime

# Day/Month/Year 
@issue.created_at.strftime("%d %b. %Y") 
# Hour:Min 
@issue.created_at.strftime("%H:%M") 

Bạn có thể đặt những hai cuộc gọi trong những người giúp đỡ riêng biệt nếu bạn thấy mình làm việc đó rất nhiều.

+1

tôi nhận được một lỗi không có phương pháp nếu tôi đặt những thành file helper vấn đề. Tôi có nên thay đổi cách tôi gọi create_at? – dannymcc

+2

Một số có thể thấy điều này hữu ích cùng với giải pháp này: [tài liệu strftime] (http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime) – stereoscott

+0

điều này phải được chấp nhận câu trả lời! –

9
<%= l(@issue.created_at, :format=>:your_format) %> 

trong locale YAML (app/config/locale/country_id.yml) bạn phải khai báo

time: 
formats: 
    your_format: '%d %b. %Y' 
    your_another_format: '%I:%M' 

Ngày định dạng cần được khai báo bên trong i18n tập tin định nghĩa YAML bạn để dễ dàng cấu hình, và định dạng ngày khác có thể được tìm thấy here

7

Kiểm tra http://www.foragoodstrftime.com/ kiếm một cách dễ dàng tùy chỉnh ngày/giờ định dạng @spike

+1

Rất thông minh .... – kstratis

+0

Thêm thời gian :: DATE_FORMATS [: mặc định] = "% d /% m /% Y% H:% M" hoặc một số biến thể của chuỗi này thành tập tin trong config/initializers (bạn có thể gọi nó là date_and_time.rb) – Mark

1

Bạn có thể làm:

@issue.created_at.to_date.iso8601

Các vấn đề liên quan