如何在c#中获取用户本地机器时区
Posted
技术标签:
【中文标题】如何在c#中获取用户本地机器时区【英文标题】:how to get user local machine time zone in c# 【发布时间】:2016-06-29 09:16:29 【问题描述】:如何在 C# 中获取用户本地机器时区。我正在尝试使用
var PublishedOn = DateTime.Now;
但时间显示根据服务器而不是本地用户机器。
【问题讨论】:
DateTime.Now 代表机器的当前时区。 UtcNow 是中性的。您是在 Web 环境中,并且想要获取客户端请求的 TimeZone...或者问题是什么? 这段代码是否在 Windows 程序中运行?在 ASP.NET 程序中?DateTime.Now
只是根据运行该代码的机器给出时间。
使用地理定位服务或 javascript
我正在尝试为 web 环境开发 mvc 应用程序。
你为什么接受一个不起作用的答案!
【参考方案1】:
您可以可靠地获取此类信息的唯一地方是客户端计算机。 Javascript would be the way to go.
地理位置在代理后不起作用,而且通常不是很可靠(根据我的经验)。
【讨论】:
【参考方案2】:DateTime.Now
将是执行代码的机器。您可以使用传入请求的 IP:
Request.UserHostAddress
使用类似 API 来了解地理位置
https://freegeoip.net
【讨论】:
【参考方案3】:TimeZone.CurrentTimeZone
用于表示执行代码的计算机上的时区。检查这些链接:http://msdn.microsoft.com/en-us/library/system.timezone.currenttimezone.aspx
http://msdn.microsoft.com/en-us/library/system.timezoneinfo.local.aspx
【讨论】:
正确答案如何?这仍然会给服务器时区 not 本地 pcs 不仅如此,TimeZone
根本不应该再使用了。很久以前就被TimeZoneInfo
取代了。 MSDN对此很清楚。不过,它对请求的函数没有帮助,因为它需要 JavaScript。以上是关于如何在c#中获取用户本地机器时区的主要内容,如果未能解决你的问题,请参考以下文章
C# - 连接到 (RAS) *** 时如何获取 IP 地址
如何在 Dynamics CRM 中获取时区的夏令时开始和结束?