在C#上获取PC TimeZone

时间:2014-03-25 15:20:29

标签: c# timezone-offset

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

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

我想要的是获取在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);

2 个答案:

答案 0 :(得分:4)

除了David Haney的回答。

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

 TimeZoneInfo.ClearCachedData();

刷新此缓存。 所以这个适合你的情况:

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

答案 1 :(得分:2)

你的生活比你需要的更难。 :)

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

var now = DateTimeOffset.Now;

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