2012-06-24 31 views
5

CMS tôi đang sử dụng cho phép tôi truy cập thời gian bù đắp của người dùng từ thời gian UTC/GMT. Vì vậy, nếu người dùng đã đặt múi giờ của họ thành EST, thì chênh lệch này sẽ là "-5".Làm cách nào để kiểm tra xem chênh lệch thời gian có trong giờ tiết kiệm ban ngày không?

Những gì tôi đang làm ngay bây giờ khi tôi cần để hiển thị thời gian hiện tại là cái gì đó như:

date('M j Y h:i A', time() + $offset*3600) 

này hoạt động, trừ khi thời gian tiết kiệm ánh sáng ban ngày được ở ảnh hưởng cho người sử dụng, sau đó nó là một giờ sau.

Vì vậy, câu hỏi của tôi là, làm thế nào tôi có thể xác định liệu một khoảng thời gian nhất định (như "-5") cần phải có thêm một giờ vào nó?

Trả lời

6

Bạn không thể lấy được giá trị này từ giá trị chênh lệch do chênh lệch áp dụng cho toàn bộ vĩ độ và các quốc gia trên đó không có DST thống nhất có hiệu lực. Ví dụ: in Australia, Daylight Saving Time is not observed in Queensland, the Northern Territory or Western Australia nhưng ở mọi nơi khác. Bạn sẽ phải geolocate your users và sau đó kiểm tra với PHP's DateTimeZone API cho dù có DST ở quốc gia đó hay không.

Xem thêm How to automatically detect user's timezone?

+1

* (liên quan) * Thú vị đọc: http://derickrethans.nl/storing-date-time-in-database.html – NikiC

2

Nếu tất cả các bạn có là "-5", sau đó bạn không có đủ thông tin để đưa ra quyết định đó. Sẽ tốt hơn nếu bạn có thể sắp xếp để có quyền truy cập vào tên của múi giờ mà người dùng đang ở (chẳng hạn như "America/New_York").

7

http://php.net/manual/en/function.date.php

I (vốn i) | Có hay không là ngày trong thời gian tiết kiệm ánh sáng ban ngày | 1 nếu Daylight Saving Time, 0 nếu không.

Điều này có hữu ích không?

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