【问题标题】:Can I determine the ZoneInfo from an IPAddress?我可以从 IP 地址确定 ZoneInfo 吗?
【发布时间】:2009-05-05 14:30:35
【问题描述】:

无论如何我可以计算出估计的(Olson) ZoneInfo value(例如(“美国/洛杉矶”、“欧洲/伦敦”等),对于单个公共 IP 地址......在 .NET 中?

我已经有了 ZoneInfo 值的完整列表,所以这不是问题......并且在下拉框中。我只想根据 IP 默认选择一个值。

我知道 IP 不会 100% 准确,代理可能会搞砸事情……但这是为了得到一个粗略的值。

这可能吗?

我在想有可能将 ZoneInfo 值与 GMT 时区相关联.. 可能吗?

是的.. .NET 请。

干杯!

(感谢 OpenID 使用 ZoneInfo 代替 GMT 时区 :( )

更新

我找到了this page,它描述了区域和纬度/经度之间的关系。因此是否有可能(例如,有人想建议一些代码示例?)如何使用 Lat Long 确定正确的 ZoneInfo?

【问题讨论】:

  • 使用我的代码,您可以从 IP 中获取 2 个字母的国家/地区,然后使用该表(来自 Wikipedia 的时区列表)获取时区……这样就可以了?
  • 那么,如果 IP x.y.z.a == CountryCode 'US' ... TimeZone 在 America/XXXX 的时区列表中指的是哪个 ??
  • 用新答案更新了我的答案:)

标签: asp.net ip-address zoneinfo


【解决方案1】:

这就是所谓的地理定位,它们是周围的几种产品。大多数情况下,这是一项付费服务​​。

你可以试试this one...它是免费的。 :)

【讨论】:

  • 不错的链接和数据库 :) 但是......它没有给我任何 ZoneInfo 信息。所以我得到一个纬度/经度。我可以将其转换为 ZoneInfo 吗?
  • 我不确定你对“ZoneInfo”的理解是什么......这就是网络服务真正输出的内容:iplocationtools.com/ip_location_api.php 如果这没有帮助,我认为你将不得不自定义数据库..再次,有几种付费产品。为此,您最好咨询您的 ISP。
  • 如果您不确定 ZoneInfo 是什么,那么您可能无法正确理解该问题。因此,顺便说一句,我已经更新了最初的帖子。
  • 我明白了。 Oslon 有一个 dll,您可以将其安装在 .net gac 中。这是一些信息:codeproject.com/KB/dotnet/Using_time_zones_in_NET.aspx
【解决方案2】:

我创建了自己的服务,以通过 IP 为我提供 ISP 和国家/地区

你可以try it here

我可以分享代码,如果这是你想要的。


新答案

为什么要使用 IP 地址的 TimeZone?为什么需要 IP 地址? 您可以轻松地从客户端获取 OffSet 时间。

我只是 implemented the code,它会输出正确的 GMT 时区。

【讨论】:

  • 噢!有趣的。可惜我在代理后面..不确定这是否发送了我的 LAN Ip (10.0.1.x) 我会在家里尝试我的 ip 没有被破坏。
  • 这只是我获取 IP 的方式...如果您转到 balexandre.com/sessions.aspx,您将看到 ServerVariables 对象,您将在那里获得不同的 IP...尝试一下。
  • 因为我使用的是 OpenId 并且他们有 tz/Olsen 时间作为他们的时区实施。现在,如果用户没有提供,我希望自动选择与当前连接最近的时区......这就是为什么我猜我需要通过 IP 地址来做到这一点。
  • 但是从我的代码中可以看出,您的猜测是错误的,您应该获取他们的本地时间并使用偏移量来获取时区,例如,您可以使用 XML 中的转换列表得到你需要实施的东西。我想知道你为什么需要下拉菜单,不应该像 StackOverflow 那样容易登录?只是openID,就是这样?您是否使用 .NET 的 OpenID 库:wiki.openid.net/Libraries 称为 DotNetOpenID @dotnetopenid.googlecode.com
猜你喜欢
  • 2012-11-13
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多