如何在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#中获取用户本地机器时区的主要内容,如果未能解决你的问题,请参考以下文章

如何通过PHP中的IP地址获取时区[重复]

C# - 连接到 (RAS) *** 时如何获取 IP 地址

如何在 Dynamics CRM 中获取时区的夏令时开始和结束?

如何在python烧瓶中获取具有本地时区的模板文件的修改日期

在c#中获取时区列表[重复]

如何在 PHP 中将默认时区设置为用户的本地时区? [复制]