2010-03-24 40 views
7

Tôi đang tạo tập lệnh cho phép người dùng chọn múi giờ của riêng mình ...Múi giờ cho những người dùng khác nhau

Nếu tôi làm công việc này, làm cách nào để lưu trữ ngày trong cơ sở dữ liệu để mọi múi giờ sẽ đọc nó và hiển thị ngày chính xác trong múi giờ của họ?

Tôi có lưu trữ ngày là GMT và sau đó khi người dùng có múi giờ GMT +10 được chọn xem mục trong tập lệnh của tôi, tôi hiển thị ngày đó theo GMT +10?

Có cách nào tốt hơn để thực hiện việc này không?

Ví dụ sẽ là tuyệt vời :)

Trả lời

4

Lưu trữ các múi giờ trong UTC trong cơ sở dữ liệu chắc chắn là con đường để đi.

1

UTC là cách bạn làm điều đó

Nhận một ngày hiện tại từ trình duyệt của họ (sử dụng Javascript và đăng các trình duyệt hẹn hò với máy chủ) để làm việc ra những gì múi giờ họ đang ở và thiết lập nó như một mặc định

1

Trong MYSQL, các trường dấu thời gian luôn được lưu trong UTC, nhưng các truy vấn sẽ trả về chuỗi định dạng dựa trên múi giờ của máy chủ cơ sở dữ liệu của bạn, vì vậy máy chủ db của bạn có thể được đặt thành UTC để đơn giản hóa mọi thứ. Chuyển nội dung đó thẳng vào đối tượng DateTime, sau đó bạn có thể sử dụng hàm setTimezone() để làm cho nó hoạt động trong múi giờ bạn muốn.

Bạn cũng có thể sử dụng date_default_timezone_set() để đặt múi giờ bằng php, sẽ được sử dụng cho phần còn lại của tập lệnh.

+1

Ồ và "UTC" là "GMT" mới, chỉ để làm rõ. – keithjgrant

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