我目前正在开发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);
答案 0 :(得分:4)
除了David Haney的回答。
TimeZoneInfo在第一次调用后缓存数据,因此PC设置中的任何更改都不会影响您的应用程序(如果它已在运行)。 你应该致电method:
TimeZoneInfo.ClearCachedData();
刷新此缓存。 所以这个适合你的情况:
TimeZoneInfo.ClearCachedData();
var offsetTimespan = DateTimeOffset.Now.Offset;
var offsetInHours = offsetTimespan.TotalHours;
答案 1 :(得分:2)
你的生活比你需要的更难。 :)
使用DateTimeOffset
:http://msdn.microsoft.com/en-us/library/system.datetimeoffset.now%28v=vs.110%29.aspx
var now = DateTimeOffset.Now;
这也将包括时区偏移信息。