C# 在C上获取PC时区#

C# 在C上获取PC时区#,c#,timezone-offset,C#,Timezone Offset,我目前正在开发asp-c作为后端代码。我想获取电脑上设置的当前时区 下面的代码仍然在识别我当前所在地区(+8GMT)的正确时区,即使我已经将电脑时区设置更改为另一个时区 我想要的是获得PC日期设置中指定的时区偏移量。有人能帮我吗。下面是到目前为止我的代码 public TimeSpan currentOffset; public DateTime utc; public DateTime local; this.utc = TimeZoneInfo.ConvertTimeBySystemTim

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

下面的代码仍然在识别我当前所在地区(+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);

你让你的生活变得比需要的更艰难

使用
DateTimeOffset


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

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

使用
DateTimeOffset


这将包括时区偏移信息。

除了David Haney的答案之外

正在缓存第一次调用后的数据,以便在PC设置中的任何更改都不会影响已运行的应用程序。 你应致电:

刷新此缓存。 因此,这一条适用于您的情况:

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

除了大卫·哈尼的回答

正在缓存第一次调用后的数据,以便在PC设置中的任何更改都不会影响已运行的应用程序。 你应致电:

刷新此缓存。 因此,这一条适用于您的情况:

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

我怎么知道电脑上指定的时区偏移量?我怎么知道电脑上指定的时区偏移量?哦,我不知道!你做到了,伙计!!它起作用了!!ClearCachedData()是一个调整。谢谢哦,我不知道!你做到了,伙计!!它起作用了!!ClearCachedData()是一个调整。谢谢
 TimeZoneInfo.ClearCachedData();
 var offsetTimespan = DateTimeOffset.Now.Offset;
 var offsetInHours = offsetTimespan.TotalHours;