-
Đọc về hỗ trợ múi giờ trong MySQL và đảm bảo cơ sở dữ liệu mysql của bạn được cấu hình với các bảng múi giờ hiện tại. Cập nhật thường xuyên.
-
Liên kết từng vị trí với múi giờ IANA / Olson được đặt tên, chẳng hạn như
"America/Los_Angeles"
hoặc"Europe/London"
. Tham khảo danh sách tại đây . Nếu bạn có kinh độ / kinh độ, bạn có thể tra cứu múi giờ qua một trong những phương pháp này . -
Sử dụng MySQL
CONVERT_TZ
chức năng chuyển đổi thời gian UTC hiện tại sang khu vực cụ thể. Ví dụ:CONVERT_TZ(UTC_TIMESTAMP(),'UTC','Asia/Tokyo')
-
Sử dụng ngày trong tuần và thời gian trong ngày của đã chuyển đổi thời gian để kiểm tra ngày và phạm vi trong mục nhập của vị trí.
Ngoài ra, lưu ý rằng những người khác có thể đề xuất thực hiện phương pháp chỉ lưu trữ UTC trong cơ sở dữ liệu hoặc chuyển đổi tất cả các giá trị thành UTC trước khi so sánh với giá trị "hiện tại". Một trong hai cách tiếp cận đó có thể không thành công trong các trường hợp phức tạp, vì ngày trong tuần theo giờ UTC không nhất thiết phải giống ngày trong tuần như ở mỗi múi giờ.
Một cách tiếp cận khác mà sẽ nhưng cần nhiều nỗ lực hơn, là xác định trước thời gian bắt đầu và dừng UTC cụ thể trong một khoảng thời gian nào đó trong tương lai (ít nhất là đến thời điểm tiếp theo, nhưng có thể xa hơn). Sau đó, bạn có thể quét danh sách này với thời gian UTC. Điều này hoạt động tốt hơn trên quy mô lớn, khi bạn có hàng nghìn mục nhập riêng lẻ trở lên để kiểm tra. Nhưng ở quy mô nhỏ hơn, chi phí thường không đáng giá.
Tương tự như vậy, bạn có thể có một quy trình nền chỉ đặt cờ "hiện đang mở" trên mỗi bản ghi, nhưng nó sẽ phải liên tục hoạt động dựa trên cơ sở dữ liệu của bạn và bạn không bao giờ có thể kiểm tra các thời điểm khác ngoài "bây giờ".