【问题标题】:Detect Timezone of client using c# [duplicate]使用c#检测客户端的时区[重复]
【发布时间】:2016-08-10 15:44:49
【问题描述】:

我正在使用 ASP.NET Webforms 来获取客户端的数据。到目前为止,我已经弄清楚了客户的 IP 地址以及客户所在的城市和国家。我试图找到一种方法来通过使用其 IP 地址或国家名称或城市名称来检索时区。我用谷歌搜索并找不到任何合适的答案,因为每个人都在谈论注入 javascript 来获取时区。 我的问题是:有没有办法找到客户的时区?如果是,那怎么办?`

【问题讨论】:

  • 请不要无缘无故地将单词变成粗体或代码 - 这真的很难阅读。
  • @Kritner 我读过很多文章 stackoverflow,他们都要求注入 javascript,但我想在 c# 上工作。要么它要求从任何链接或类似的东西获取时区!

标签: c# asp.net webforms timezone


【解决方案1】:

仅使用 C# 以可靠的方式执行此操作是不可能的。 HTTP 规范不提供客户端时区的任何提示。

您可以通过使用 IP 地理位置猜测客户的时区,并且有许多免费和商业服务可以提供时区信息。然而,这种方法的准确性有限。

即使使用 JavaScript,当前的解决方案仍然只能猜测客户端的时区。 ECMAScript Intl API 对此进行了改进,但并非所有浏览器都完全实现了这一点。 See more here.

最终,如果您需要通过后端代码了解客户端的时区,最好的办法是询问用户。在应用程序的某处提供时区选择器。

您可能还会发现this related answer 很有用。

【讨论】:

  • 是的,我看过那些文章,但它们是非常古老的线程,所以我想再问一遍,想知道程序员现在是否发现了一种方法:(
  • 有没有什么方法可以通过提供城市和国家来从互联网上获取时间? @马特·约翰逊
  • 我确信有很多服务可以提供这样的查询。试试ip-api.com。另请参阅此答案:stackoverflow.com/a/16086964/634824。请注意,在这两种情况下,您都会获得 IANA 时区 ID。要与 .NET 一起使用,您需要 Noda Time
  • 我有时区,我是通过使用 javascript 做到的,我不能使用 c#,现在我可以从我得到的时区获取时间吗? @马特·约翰逊
  • 正如我所说 - 如果你想在 C# 中做,你需要Noda Time。如果您想继续使用 JavaScript,请使用 moment.js 和时区插件。
【解决方案2】:

您是否尝试过使用 TimeZoneInfo 类 它代表世界上的任何时区。

https://msdn.microsoft.com/en-us/library/system.timezoneinfo(v=vs.110).aspx

【讨论】:

  • 没有,没试过这门课。我现在就试试!
  • 这无助于在 Web 应用中检测客户端的时区。
  • @Lakiel Wade 它没有帮助,因为我的时间是凌晨 1:21,它返回下午 3:21
猜你喜欢
  • 2020-01-24
  • 2011-03-01
  • 2012-11-22
  • 2012-11-29
  • 1970-01-01
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多