Tôi đang xem xét chuyển đổi ứng dụng Rails 2.3 của chúng tôi để xử lý chính xác múi giờ (tại thời điểm này mọi thứ ở UTC không đúng, nhưng là tiện lợi!).Lưu trữ đúng ngày với TimeZone trong MySQL DB cho ứng dụng Rails
tôi có các thiết lập trong environment.rb:
config.active_record.default_timezone = :utc
config.time_zone = "UTC"
Trong tương lai, vào từng yêu cầu trong ứng dụng của chúng ta, tôi có kế hoạch đưa ra các thiết lập sau đây để thiết lập Time Zone:
Time.zone = user.time_zone
đâu user.time_zone
là sở thích đã chọn của chúng (ví dụ: US Pacific Time
).
Điều này làm việc tốt trong ứng dụng, nhưng câu hỏi của tôi liên quan đến những gì Rails sau đó lưu trữ trong MySQL DB. Nếu người dùng chọn ngày 1 tháng 6 năm 2009, điều này được lưu trữ trong trường DATETIME
trong cơ sở dữ liệu trong UTC nhưng với chênh lệch múi giờ. Ví dụ: nếu người dùng đã chọn múi giờ GMT+6
, ngày được chọn ngày 1 tháng 6 năm 2009 kết thúc trong cơ sở dữ liệu là 2009-06-01 06:00:00 UTC
.
Tôi đã dự kiến điều này sẽ được lưu trữ dưới dạng 2009-06-01 00:00:00 UTC
trong cơ sở dữ liệu. Suy nghĩ của tôi đúng hay là Rails đang làm điều gì đó bất ngờ ở đây?
Bạn chỉ cần hiển thị ngày trong múi giờ của người dùng hay điều quan trọng là phải lưu trữ ngày đó cụ thể trong múi giờ đó? –
Chris Tôi muốn lưu trữ nó trong UTC và chỉ hiển thị ngày trong múi giờ của người dùng – Olly