2009-07-22 28 views
8

Ngay bây giờ tôi có:chuyển đổi thời gian vào giờ địa phương của Ruby on Rails

Time.strftime("%I:%M%p") mà mang lại cho tôi những định dạng hr:min AM/PM mà tôi cần. Tuy nhiên nó quay lại UTC và tôi cần múi giờ địa phương.

Làm cách nào để thay đổi múi giờ thành múi giờ địa phương và giữ cùng định dạng đó cho thời gian?

+3

i muốn tiêu đề của bài viết này sẽ được thay đổi để phản ánh rằng tác giả đã hỏi về Thời gian không phải là DateTime. Điều này dẫn đến kết quả tìm kiếm gây hiểu lầm. Tôi đã đến đây từ google nghĩ rằng điều này là về việc thay đổi một đối tượng DateTime thành giờ địa phương bằng cách tìm kiếm 'datetime địa phương trong rails' –

Trả lời

11

Ngoài ra, hãy nhớ rằng như của Rails 2.1, múi giờ được hỗ trợ.

trong cấu hình của bạn/file environment.rb:

config.time_zone = 'UTC' 

Bạn có thể tìm thấy giá trị khác bằng cách chạy

rake time:zones:local 

Và Ryan Bates có railscast tuyệt vời về nó: http://railscasts.com/episodes/106-time-zones-in-rails-2-1

7

Nói chung điều đó sẽ hiệu quả. Bạn có thể phải múi giờ của bạn đặt không chính xác, mặc dù:

Time.now.strftime("%I:%M%p") # => "12:48PM" 
Time.now.utc.strftime("%I:%M%p") # => "04:48PM" 
Time.now.utc.getlocal.strftime("%I:%M%p") # => "12:48PM" 
Time.now.zone # => "EDT" 

này có thể bị ảnh hưởng bởi biến TZ môi trường, cài đặt hệ điều hành vực của bạn, hoặc cấu hình Rails của bạn trong environment.rb.

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