我需要能够在几分钟内知道运行我的应用程序的设备的时区偏移量。例如,对于太平洋标准时间(我正在测试的地方),我需要获取 int -480。在阿富汗我会得到 270,在英国我会得到 0。
到目前为止,我最好的尝试都返回了 0,这是错误的值:
int timezoneOffsetInMinutes = (DateTime.Now.ToLocalTime() - DateTime.Now).Minutes// returns 0 instead of the expected -480
和
int timezoneOffsetInMinutes = TimeZoneInfo.Utc.BaseUtcOffset.Minutes - TimeZoneInfo.Local.BaseUtcOffset.Minutes;// also returns 0, not -480
我不确定 this post问同样的问题(因为没有给出示例偏移量或示例代码),但是给出的一个答案肯定与我正在寻找的内容无关。
最佳答案
如果你想要base/standard偏移量,那么TimeZoneInfo
可能是访问该信息的最正确方式(并且还可以让您访问其他信息,例如时区是否支持夏令时):
TimeSpan offset = TimeZoneInfo.Local.BaseUtcOffset;
但是,如果您想要当前 偏移量(包括 DST 更改),我会养成使用 DateTimeOffset
的习惯,因为它基本上取代了 DateTime
(它能够代表与本地机器不同的时区的“本地”时间):
TimeSpan offset = DateTimeOffset.Now.Offet;
关于c# - 如何在 WP7 上以分钟为单位获取时区偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6721731/