2011-10-08 22 views
16

Facebook, myspace, MSN, craigslist; tất cả phát hiện múi giờ và hiển thị thời gian và ngày chính xác mà không bao giờ gửi biểu mẫu hoặc tải lại trang.Các trang web chính phát hiện múi giờ như thế nào?

Làm cách nào để thực hiện? Tôi có một trang web khá lớn và có người xuất bản các bài viết cần hiển thị thời gian chính xác (tải lên 3 giờ chiều hoặc 6 giờ chiều tùy thuộc vào múi giờ).

Trình tải trước? Javascript? Đang tải trang và tải lại trang? Trang web của tôi hiện có người nhập trang web và khi nhập lần đầu tiên, trang này tải lại trang có thông tin cập nhật về múi giờ của họ thông qua javascript. Tuy nhiên đây là một điều khá khó chịu và đang tìm kiếm một giải pháp thay thế khác. Tôi biết rằng khi tải, tôi có thể gửi yêu cầu ajax và sau đó cập nhật mọi thứ trên toàn bộ trang web với múi giờ chính xác cho người dùng NHƯNG nếu tôi phải nhấp lại hoặc tải lại yêu cầu nếu tôi muốn gửi lại thông tin đó cũng là xấu. Vậy họ phải làm việc đó như thế nào?

Tôi đang chơi với Facebook, thay đổi vị trí của tôi trên máy cục bộ của tôi và dường như cập nhật múi giờ sau mỗi 5 phút.

Tôi là php, dựa trên khung công tác dựa trên zend.

+0

xem câu trả lời của tôi, nó chính xác hơn một chút. :) – pckabeer

Trả lời

16

không có "múi giờ" Yêu cầu tiêu đề, hoặc một cái gì đó như thế, vì vậy, bạn có thể không phải với php

nhưng với javascript bạn có thể nhận được chênh lệch múi giờ của khách hàng, sau đó bạn có thể thực hiện yêu cầu xmlhttp để gửi thông tin tới php

xem điều này: http://www.pageloom.com/automatic-timezone-detection-with-javascript

khá dễ dàng!

hy vọng điều này sẽ giúp

+1

@AdamSack các trang web chính phát hiện múi giờ theo thông tin của người dùng đã đăng ký, họ có cơ sở dữ liệu địa lý riêng của họ.trong cộng darius nói rằng thay đổi thời gian trên máy tính của nó, sự thay đổi được phát hiện, vì vậy họ chắc chắn sử dụng javascript. –

+0

Tôi đồng ý với @AdamSack vẫn +1 cho Javascript;) –

+1

Độ lệch múi giờ không phải là hằng số, nó thay đổi với DST, do đó nó có thể mơ hồ về múi giờ mà ứng dụng khách sử dụng. Một sự kết hợp của IP, js timezone offset và js locale sẽ cho kết quả tốt hơn (bạn cần một cơ sở dữ liệu kết hợp tất cả những thứ này bằng cách nào đó). –

4

Bạn có thể tìm thấy quốc gia người dùng using IP address geocoding và sau đó có một số mảng có múi giờ cho từng quốc gia. Tôi nghĩ không có cách nào khác. Bạn có thể lấy nước sử dụng như thế này:

<?php 
$file = file_get_contents("http://api.hostip.info/get_html.php?ip=".$_SERVER['REMOTE_ADDR'].""); 
?> 

Sau đó, chỉ cần sử dụng explode cho $file.

Look cũng các mã Stackoverflow:
How can I determine a web user's time zone?
Any Reliable API available to determine User's city and country from IP address

3

Tôi tin rằng họ sử dụng địa chỉ IP và vị trí địa lý. Thats tất cả để có nó.

+0

không, js ajax yêu cầu cũng là lựa chọn tốt –

1

Hãy thử mã php này này cung cấp cho độ chính xác tốt hơn

<?php $ip = $_SERVER['REMOTE_ADDR']; 
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true"); 
    $json = json_decode($json,true); 
    $timezone = $json[localTimeZone];?> 
+0

Tại sao một cuộc bỏ phiếu xuống peeps? Tôi thấy hai nhược điểm, bằng cách sử dụng IP có thể cung cấp cho các múi giờ sai nếu máy chủ của nhà cung cấp trong một múi giờ khác, và sử dụng một trang web bên ngoài là không tốt vì chúng tôi không muốn bị lệ thuộc. Cảm ơn cho các đầu vào mặc dù – Darius

+0

Tôi đã không downvote nhưng tôi nghĩ rằng hai lý do bạn liệt kê là lý do khá hấp dẫn không sử dụng nó – sricks

1

jsTimezoneDetect cung cấp một thư viện lớn để phát hiện múi giờ tự động qua javascript.

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