How are major sites detecting timezone? [duplicate]

限于喜欢 提交于 2019-12-20 09:18:16

问题


Facebook, myspace, MSN, craigslist; all detect timezone and show times and dates correctly without ever submitting a form or reloading a page.

How do they do it? I have a pretty large site and have people publishing articles which need to display correct times (uploaded 3pm or 6pm depending on timezone).

Preloaders? Javascript? Loading the page and reloading it? My site currently has the person enter the site and upon first entry it reloads the page with updated information of their timezone through javascript. This is however a pretty annoying thing and am looking for another alternative. I know that upon loading I can send out an ajax request and then have it update everything throughout the site with the correct timezone for the user BUT if I have to click back, or reload it asks if I'd like to send the information again which is also bad. So how do they do it?

I was playing around with Facebook, changing my location on my local machine and it seemed to update the timezone every 5 minutes or so.

I am php, zend-framework based.


回答1:


there is no "timezone" request header, or something like that, so, you can't with php

but with javascript you can get the timezone offset of the client, then you could make a xmlhttp request to send informations to php

see this: http://www.pageloom.com/automatic-timezone-detection-with-javascript

pretty easy!

hope this helps




回答2:


You could find user country using IP address geocoding and then have some array with timezones for each country. I think there are no other ways. You can fetch the user country like this:

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

Then just use explode for the $file.

Look also these Stackoverflow codes:
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:


I believe they use IP addressing and Geo-location. That's all there is to it.




回答4:


First off, you should work with UTC across all levels and if you don't know a time zone mark the time as such. Then on local client you can adjust the time with the timezoneOffset

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset




回答5:


Try this php code this gives better precision

  <?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];?>



回答6:


jsTimezoneDetect provides a great library for automatic timezone detection via javascript.



来源:https://stackoverflow.com/questions/7696215/how-are-major-sites-detecting-timezone

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!