我正在尝试将时间从 UTC 转换为电话的本地时间。为此,我使用以下内容:
if (progress.ActionDateTime.HasValue)
progress.ActionDateTime = TimeZoneInfo.ConvertTime(progress.ActionDateTime.Value, TimeZoneInfo.Local);
但是,转换发生后的时间仍然完全相同。这种方法在 WP7 中有效吗?
我正在尝试将时间从 UTC 转换为电话的本地时间。为此,我使用以下内容:
if (progress.ActionDateTime.HasValue)
progress.ActionDateTime = TimeZoneInfo.ConvertTime(progress.ActionDateTime.Value, TimeZoneInfo.Local);
但是,转换发生后的时间仍然完全相同。这种方法在 WP7 中有效吗?
DateTime 不存储有关时区的信息。根据文档,TimeZoneInfo.ConvertTime
将使用 DateTime.Kind 属性来确定应该如何转换时间:
由于您使用TimeZoneInfo.Local
的是第二个参数(指定目标时区),我假设您的 DateTimeKind 是本地的或未指定的。因此,您将本地日期转换为本地日期,这显然是行不通的。
DateTime.ToLocalTime
也使用 DateTimeKind。根据文档:
基本上,虽然TimeZoneInfo.ConvertTime
认为 DateTimeKind.Unspecified = Local,但DateTime.ToLocalTime
认为 DateTimeKind.Unspecified = Utc。它解释了为什么后者有效而前者无效。