如何在WP7上获得以分钟为单位的时区偏移

本文关键字:为单位 分钟 时区 WP7 | 更新日期: 2023-09-27 18:02:35

我需要能够知道在几分钟内运行我的应用程序的设备的时区偏移量。例如,对于太平洋标准时间(我正在测试的地方(,我需要得到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

我不确定这篇文章是否问了同样的问题(因为没有给出示例偏移量或示例代码(,但给出的一个答案肯定与我想要的无关。

如何在WP7上获得以分钟为单位的时区偏移

如果您想要基本/标准偏移量,那么TimeZoneInfo可能是访问该信息的最正确方式(还可以访问其他信息,例如时区是否支持夏令时(:

TimeSpan offset = TimeZoneInfo.Local.BaseUtcOffset;

然而,如果你想要当前偏移量(包括DST变化(,我会养成使用DateTimeOffset的习惯,因为它基本上取代了DateTime(它可以将"本地"时间表示为与本地机器不同的时区(:

TimeSpan offset = DateTimeOffset.Now.Offet;
DateTime utc = DateTime.Now.ToUniversalTime();
DateTime local = DateTime.Now;
TimeSpan diff = (utc - local);

这将返回您和UTC之间的正确时差。