2008-09-19 20 views
5

Tôi đang làm việc trên ứng dụng Rails cần xử lý ngày và giờ trong múi giờ của người dùng. Gần đây chúng tôi đã di chuyển nó sang Rails 2.1 và thêm hỗ trợ múi giờ, nhưng có rất nhiều tình huống trong đó chúng tôi sử dụng Time # utc và sau đó so sánh với thời gian đó. Nó sẽ không giống như so sánh với đối tượng Time ban đầu?Khi nào thích hợp để sử dụng Time # utc trong Rails 2.1?

Khi nào thích hợp để sử dụng Time # utc trong Rails 2.1? Khi nào nó không phù hợp?

Trả lời

7

Nếu bạn đã thiết lập:

config.time_zone = 'UTC' 

Trong environment.rb của bạn (nó ở đó theo mặc định), sau đó lần Automagically sẽ được chuyển đổi sang UTC khi ActiveRecord lưu trữ chúng.

Sau đó, nếu bạn đặt Time.zone (trong một before_filter trên ứng dụng.rb là vị trí thông thường) thành Múi giờ của người dùng, tất cả thời gian sẽ được chuyển đổi tự động vào múi giờ của người dùng từ bộ nhớ utc.

Chỉ cần cẩn thận với Time.now.

Xem thêm:

http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/

http://errtheblog.com/posts/49-a-zoned-defense - bạn có thể sử dụng JS đây để phát hiện khu

Hy vọng rằng sẽ giúp.

0

Nếu ứng dụng của bạn có người dùng ở nhiều múi giờ, bạn nên luôn luôn lưu trữ thời gian của bạn bằng UTC (bất kỳ múi giờ nào sẽ hoạt động, nhưng bạn nên tuân theo quy ước phổ biến nhất).

Cho phép người dùng nhập vào theo giờ địa phương nhưng chuyển sang UTC để lưu trữ (và so sánh và thao tác). Sau đó, chuyển đổi từ UTC để hiển thị theo múi giờ địa phương của mỗi người dùng.

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