Sub*_*ion 6 .net c# timezone datetime windows-phone-7
我需要能够在几分钟内知道运行我的应用程序的设备的时区偏移量.例如,对于太平洋标准时间(我正在测试的地方),我需要得到int -480.例子(我不能从我现在的位置得到 - 但是为了让你知道我需要什么)在阿富汗我会得到270而英国就是我得到0的地方.
到目前为止我的最佳尝试都返回0,这是错误的值:
int timezoneOffsetInMinutes = (DateTime.Now.ToLocalTime() - DateTime.Now).Minutes// returns 0 instead of the expected -480
Run Code Online (Sandbox Code Playgroud)
和
int timezoneOffsetInMinutes = TimeZoneInfo.Utc.BaseUtcOffset.Minutes - TimeZoneInfo.Local.BaseUtcOffset.Minutes;// also returns 0, not -480
Run Code Online (Sandbox Code Playgroud)
我不确定这篇文章是否提出了同样的问题(因为没有给出示例偏移或示例代码),但是给出的一个答案肯定与我正在寻找的无关.
如果您想要基本/标准偏移,那么TimeZoneInfo可能是访问该信息的最正确方式(并且还允许您访问其他信息,例如时区是否支持夏令时):
TimeSpan offset = TimeZoneInfo.Local.BaseUtcOffset;
Run Code Online (Sandbox Code Playgroud)
但是,如果你想要当前的偏移量(包括DST变化),我会养成使用的习惯DateTimeOffset,因为它基本上已经取代了DateTime(它可以代表一个与本地机器不同的时区的"本地"时间):
TimeSpan offset = DateTimeOffset.Now.Offet;
Run Code Online (Sandbox Code Playgroud)