繁体   English   中英

在C#上获取PC TimeZone

[英]Get PC TimeZone on C#

我目前正在开发ASP-C#作为后端代码。 我想获取在PC上设置的当前时区。

即使我已经将PC时区设置更改为另一个时区,下面的代码仍在标识当前区域(+ 8GMT)的正确时区。

我想要的是获取PC日期设置上指定的时区偏移量。 谁可以帮我这个事。 下面是到目前为止的代码。

public TimeSpan currentOffset;
public DateTime utc;
public DateTime local;

this.utc = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Utc.Id);
this.local = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, TimeZoneInfo.Local.Id);
this.currentOffset = this.local.Subtract(this.utc);

除了David Haney的答案。

TimeZoneInfo会在首次调用后缓存数据,因此PC设置中的任何更改都不会影响您的应用程序(如果已运行)。 您应该调用method

 TimeZoneInfo.ClearCachedData();

刷新此缓存。 因此,这将适合您的情况:

 TimeZoneInfo.ClearCachedData();
 var offsetTimespan = DateTimeOffset.Now.Offset;
 var offsetInHours = offsetTimespan.TotalHours;

您正在使生活变得更加艰难。 :)

使用DateTimeOffsethttp : //msdn.microsoft.com/zh-cn/library/system.datetimeoffset.now%28v=vs.110%29.aspx

var now = DateTimeOffset.Now;

这还将包括时区偏移信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM