javascriptphptimezone

How to detect user's timezone?


I need to know what time zone is currently my users are in based on their IP or http header.

I got many answer regarding this issue, but i could not understood those answer. Some said use -new Date().getTimezoneOffset()/60 (from here). But what does it mean?

I have a date_default_timezone_set("Asia/Calcutta"); in the root of my (index.php) page. So for this I have to get the timezone dynamically and set it in place of Asia/Calcutta.


Solution

  • To summarize Matt Johnson's answer in terms of code:

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js">
    </script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js">
    </script>
    <script type="text/javascript">
      $(document).ready(function(){
        var tz = jstz.determine(); // Determines the time zone of the browser client
        var timezone = tz.name(); //For e.g.:"Asia/Kolkata" for the Indian Time.
        $.post("url-to-function-that-handles-time-zone", {tz: timezone}, function(data) {
           //Preocess the timezone in the controller function and get
           //the confirmation value here. On success, refresh the page.
         });
      });
    </script>