Tôi muốn hỏi xem điều này có hiệu quả không, trước khi tôi thực hiện công việc sửa lỗi chính xác về cách xử lý ngày và giờ.Lưu trữ ngày và thời gian trong UTC và chuyển đổi giờ địa phương bằng PHP/MySQL
Để đặt câu hỏi cho tôi, đây là vấn đề của tôi ... Tôi lưu trữ "hành động" do người dùng thực hiện trong bảng lịch sử. Những hành động này có dấu thời gian trên chúng. Người dùng có thể đến từ khắp nơi trên thế giới và do đó có múi giờ khác nhau. Tôi muốn hiển thị các mục trong lịch sử và hiển thị dấu thời gian trong múi giờ địa phương của một người.
Ngoài ra, tôi biết tôi có thể sử dụng trường ngày giờ và chỉ lưu trữ định dạng thời gian UTC, nhưng tôi chọn sử dụng dấu thời gian để tôi có thể đặt mặc định thành thời gian hiện tại.
Điều này có phù hợp với sự cố của tôi không?
múi giờ máy chủ của tôi sẽ là Los Angeles
cửa hàng timestamps như một dấu thời gian trong MySQL. Sự hiểu biết của tôi là dấu thời gian luôn được lưu trữ dưới dạng UTC. Các bản ghi sẽ được lưu trữ theo mặc định là creation_date HOẶC tôi sẽ đặt UTC_TIMESTAMP() một cách rõ ràng. Quả thực, tất cả các bản ghi trong db sẽ là UTC.
Khi người dùng đăng nhập, tôi sẽ lấy múi giờ của họ (tôi lưu trữ múi giờ này trong db dưới dạng cài đặt người dùng). Ví dụ này, giả sử người này ở New York.
Đây là câu hỏi của tôi. Một trong hai tác phẩm này có hoạt động không?
- a) Lấy dữ liệu lịch sử. Tất cả các dấu thời gian sẽ tự động được chuyển đổi từ UTC sang Los Angeles. Mục lịch sử Foreach, chuyển đổi dấu thời gian Los Angeles thành dấu thời gian và tiếng vọng của New York.
HOẶC
- b) Đặt php múi giờ "date_default_timezone_set" đến New York. Lấy dữ liệu lịch sử. Tất cả các dấu thời gian là STILL ở Los Angeles thời gian bằng máy chủ vẫn là thời gian Los Angeles. Mục lịch sử Foreach, chỉ cần lặp lại dấu thời gian vì "date_default_timezone_set" sẽ tự động chuyển đổi dấu thời gian Los Angeles thành New York.
Tùy chọn 4b có hoạt động không? Có cách nào tốt hơn để chuyển đổi từ thời gian Los Angeles sang New York?
Có cách nào tốt hơn để làm điều này nói chung không?
Lưu trữ trong UTC, hiển thị địa phương cho người dùng là giải pháp hiện hành. –