Tôi có bản ghi foo
trong cơ sở dữ liệu có thuộc tính :start_time
và :timezone
.Ruby/Rails - Thay đổi múi giờ của Thời gian, mà không thay đổi giá trị
Ví dụ: :start_time
Ví dụ: UTC - 2001-01-01 14:20:00
. Ví dụ: :timezone
là một chuỗi - America/New_York
.
Tôi muốn tạo đối tượng Thời gian mới với giá trị :start_time
nhưng có múi giờ được chỉ định bởi :timezone
. Tôi không muốn tải :start_time
và sau đó chuyển đổi thành :timezone
, vì Rails sẽ thông minh và cập nhật thời gian từ UTC để nhất quán với múi giờ đó.
Hiện nay,
t = foo.start_time
=> 2000-01-01 14:20:00 UTC
t.zone
=> "UTC"
t.in_time_zone("America/New_York")
=> Sat, 01 Jan 2000 09:20:00 EST -05:00
Thay vào đó, tôi muốn nhìn thấy
=> Sat, 01 Jan 2000 14:20:00 EST -05:00
tức. Tôi muốn làm:
t
=> 2000-01-01 14:20:00 UTC
t.zone = "America/New_York"
=> "America/New_York"
t
=> 2000-01-01 14:20:00 EST
Có lẽ điều này sẽ giúp: http: //api.rubyonrails. org/classes/Time.html # method-c-use_zone – MrYoshiji
Tôi không nghĩ rằng bạn đang sử dụng múi giờ chính xác. Nếu bạn lưu nó vào db của bạn dưới dạng UTC từ địa phương, có gì sai khi phân tích cú pháp thông qua thời gian địa phương và lưu nó qua utc tương đối của nó? – Trip
Ya ... Tôi nghĩ rằng để nhận được sự trợ giúp tốt nhất bạn có thể cần giải thích * tại sao * bạn sẽ cần phải làm điều này? Tại sao bạn lưu trữ sai thời gian cho cơ sở dữ liệu ở nơi đầu tiên? – nzifnab