c# - 如何在 WP7 上以分钟为单位获取时区偏移量?

标签 c# .net datetime windows-phone-7 timezone

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

相关文章:

ruby-on-rails - 如何在strftime方法中正确设置时间格式?

c# - DateTime.TryParseExact C# 有效格式和解析

python - 模型中的 Django default=datetime.now() 在 uwsgi 重置后总是保存相同的日期时间

c# - 检查给定日期是否早于 c# 和 mySql 中的当前日期

c# - 创建抽象类的对象。怎么可能

.net - WPF:直接绑定(bind)到控件

.net - 消除输入线路上的输出声音

c# - 尝试使用 epplus 读取 excel 文件并出现 System.NullException 错误?

c# - 使用 IValidatableObject 将数据验证添加到 WPF 和 C# 中的 Entity Framework 实体

c# - HTML敏捷包: how to create indented HTML?