WP7 TimeZoneInfo.ConvertTime没有给出正确的结果

时间:2012-12-28 04:16:29

标签: windows-phone-7 timezone

我正在尝试将时间从UTC转换为手机的本地时间。为此,我使用以下内容:

if (progress.ActionDateTime.HasValue)
                    progress.ActionDateTime = TimeZoneInfo.ConvertTime(progress.ActionDateTime.Value, TimeZoneInfo.Local);

然而,转换发生后,时间仍然完全相同。这个方法在WP7中工作吗?

1 个答案:

答案 0 :(得分:2)

DateTime不存储有关时区的信息。 According to the documentationTimeZoneInfo.ConvertTime将使用DateTime.Kind属性来确定如何转换时间:

  • DateTimeKind.Local和DateTimeKind.Unspecified:将本地时间转换为destinationTimeZone中的时间。
  • DateTimeKind.Utc:将协调世界时(UTC)转换为destinationTimeZone中的时间。

由于您使用TimeZoneInfo.Local作为第二个参数(指定目标时区),我假设您的DateTimeKind是Local或Unspecified。因此,您将本地日期转换为本地日期,这显然不起作用。

DateTime.ToLocalTime也使用DateTimeKind。 According to the documentation:

  • Utc:此DateTime实例将转换为本地时间。
  • 本地:不执行转换。
  • 未指定:假定此DateTime实例为UTC时间,并且执行转换,就像Kind是Utc一样。

基本上,虽然TimeZoneInfo.ConvertTime认为DateTimeKind.Unspecified = Local,但DateTime.ToLocalTime认为DateTimeKind.Unspecified = Utc。它解释了为什么后者有效,而前者没有。