【问题标题】:how to get user local machine time zone in c#如何在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 应用程序。
  • 你为什么接受一个不起作用的答案!

标签: c# asp.net-mvc timezone


【解决方案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。
      猜你喜欢
      • 2010-10-14
      • 2021-06-01
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 2020-03-23
      • 2012-01-28
      • 2023-03-25
      相关资源
      最近更新 更多