Múi giờ khó có thể chọn từ hàng chục các tùy chọn. Tôi muốn làm cho quá trình này đơn giản hơn. Tôi thấy một số hình thức trong tự nhiên mà có thể làm đoán tốt nhất. Tôi Goggled cho một giải pháp nhưng với ra bất kỳ may mắn. Có ai có ý tưởng làm thế nào để làm điều đó?Cách phát hiện múi giờ của người dùng trong biểu mẫu đăng ký?
Trả lời
Javascript:
var today = new Date();
alert(today.getTimezoneOffset());
này sẽ cung cấp cho các offset (GMT-X), nhưng không phải là tên múi giờ thực tế. Hãy nhớ rằng bù giờ GMT có thể tương ứng với nhiều múi giờ và cũng phải tính đến tiết kiệm ánh sáng ban ngày. Tuy nhiên, đây có lẽ là nơi dễ nhất để bắt đầu, ngắn cho phép người dùng chọn múi giờ của họ từ menu thả xuống.
Bạn có thể sử dụng JavaScript đến hơn hoặc ít đáng tin cậy xác định múi giờ bù đắp. HTTP, với kiến thức của tôi, không cung cấp bất kỳ phương tiện nào để xác định múi giờ của khách hàng trên máy chủ.
Sử dụng Javascript:
<input type="hidden" id="visitorTZ" name="visitorTZ" />
<script type="text/javascript">
d = new Date();
document.getElementById('visitorTZ').value = d.getTimezoneOffset()/60;
</script>
Bạn có thể thử để phát hiện một quốc gia sử dụng bằng cách kết hợp địa chỉ IP của họ cho một loạt các danh sách. Có nhiều cách khác nhau để đạt được điều này, nhưng tốt nhất là sử dụng this API.
Một ví dụ về việc sử dụng sẽ là: http://nl.ae/iptocapi.php?type=1&ip=00.00.00.00. Điều này sẽ trả về mã quốc gia của địa chỉ IP đó. Sau đó, nó khá dễ dàng để phù hợp với mã quốc gia với múi giờ.
Khi bạn đã tìm thấy múi giờ theo cách này, bạn có thể sử dụng múi giờ làm giá trị mặc định trong hộp thả xuống.
Tôi đã tìm thấy giải pháp tốt hơn và mạnh mẽ hơn tại đây: http://www.onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/.
Như tác giả giải thích, Date.getTimezoneOffset()
là không phù hợp.
- 1. MySQL: giữ múi giờ của máy chủ hoặc múi giờ của người dùng?
- 2. Cách lấy múi giờ của người dùng hiện tại trong C#
- 3. cách phát hiện múi giờ của khách hàng?
- 4. Hiển thị ngày/giờ trong múi giờ của người dùng - về phía khách hàng
- 5. Lưu trữ người dùng Tùy chọn múi giờ
- 6. Cách bỏ qua múi giờ của người dùng và lực Ngày() sử dụng múi giờ cụ thể
- 7. tạo biểu mẫu đăng ký
- 8. Cách chọn múi giờ thân thiện với người dùng hơn?
- 9. Symfony2: Nơi đặt múi giờ do người dùng xác định
- 10. Ở Django, làm cách nào để đặt trường người dùng thành biểu mẫu cho người dùng hiện đã đăng nhập?
- 11. Đăng ký người dùng CouchApp
- 12. Múi giờ cho những người dùng khác nhau
- 13. Cách chuyển đổi datetime từ múi giờ của người dùng thành EST trong javascript
- 14. Cách tốt nhất để đăng ký người dùng ở Django
- 15. MVC3 + Cách lấy tên người dùng hiện tại đã đăng nhập của người dùng
- 16. Làm cách nào để chuyển đổi bài đăng trên facebook created_time thành múi giờ của người dùng?
- 17. Có plugin JQuery nào để chuyển đổi múi giờ UTC thành múi giờ của người dùng cục bộ không?
- 18. Đường ray: Biểu mẫu đăng ký người dùng mới nhiều bước (FSM?)
- 19. Sử dụng python, cách chính xác nhất để tự động xác định múi giờ hiện tại của người dùng
- 20. Symfony2: Cách tạo nhiều biểu mẫu đăng ký với FOSUserBundle
- 21. Django với cài đặt múi giờ hệ thống so với múi giờ cá nhân của người dùng
- 22. Buộc Biểu mẫu đăng nhập Django để có tên người dùng trên 30 ký tự
- 23. PHP & MySQL: Chuyển đổi TIMESTAMP được lưu trữ thành múi giờ địa phương của người dùng
- 24. Thêm người đăng ký MailChimp vào nhóm có biểu mẫu đăng ký, chứ không phải API
- 25. Cách phát hiện ngôn ngữ của người dùng
- 26. Cách tạo khóa đăng ký người dùng trong Delphi?
- 27. Đã đăng ký tại/appname /: Người dùng đã đăng ký
- 28. Làm thế nào để có được múi giờ của người dùng bằng cách sử dụng jquery?
- 29. Cách tắt đăng ký giao diện người dùng trong Magento
- 30. Chỉnh sửa khoá đăng ký của người dùng khác
Điều duy nhất tôi muốn lưu ý là 'getTimezoneOffset()' dường như trả về khoảng thời gian GMT là chênh lệch múi giờ của người dùng được bù trừ, và không phải là cách khác xung quanh. tức là khi ở Giờ Chuẩn Đông Bắc Mỹ, '(Ngày mới()). GetTimezoneOffset()/60' trả về' 5', khi EST thực sự bằng GMT-05: 00, không phải GMT + 05: 00. – gabriel