开发者

Find time zone from IP address

Is there a way to find the time zone a user is in when all I have is their IP address? I'm looking for the time offset I need to apply to the server开发者_StackOverflow time in order to find the time for the user's location.


You'll need to attempt to determine the location (which is far from 100% accurate). See this question about doing just that.

See this question about translating a zip code into time zone (though that, again, is not 100% fool proof).

The short version is: it's complicated. You'll have to use a third-party service that maintains a database of IP masks to locations, then use the location determined there to determine the time zone.

It's far more reliable to have the client simply send the time zone (or UTC offset) when it connects.

If this is a web application, see one more question about using JavaScript to determine the client time zone.


You can get both a user's timezone and the UTC Offset from an IP address with ipapi.co :

https://ipapi.co/8.8.8.8/timezone
> America/Los_Angeles

https://ipapi.co/8.8.8.8/utc_offset
> -0800


MaxMind offers a database you can purchase that will help you with your task: http://www.maxmind.com/app/city


ip2nation provides an SQL database that you can query to geolocate an IP address:
http://www.ip2nation.com/ip2nation/Download

With the country code in hand, you can retrieve a country's time zone possibly by querying another database or library.


Using restSharp.org and my service ipdata.co

var client = new RestClient("https://api.ipdata.co?api-key=test");
var request = new RestRequest("1.1.1.1", Method.GET);
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string
RestResponse<Ip> response2 = client.Execute<Ip>(request);
var time_zone = response2.Data.time_zone;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜