使用 C# 检测客户端的时区

Detect Timezone of client using c#

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

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

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

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

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

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

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

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