使用rdlc报告上的夏令时将UTC转换为本地时间

时间:2013-12-19 04:59:02

标签: c# reportviewer rdlc utc dynamic-rdlc-generation

我选择包含一些日期列的数据。从数据库返回的日期是UTC格式。我将这些数据提供给报告查看器,并希望以本地格式显示日期,考虑夏令时。

我可以从服务器端执行此操作,但我希望转换符合客户端计算机时区。

有什么办法吗?

1 个答案:

答案 0 :(得分:0)

您的客户是网页还是.NET应用?如果它是.NET应用程序,你可以这样做。首先将您的客户端时区发送到您的服务器,如下所示:

string clientTimeZone = TimeZoneInfo.Local.ToSerializedString();

然后在您的服务器上:

var clientTimeZoneInfo = TimeZoneInfo.FromSerializedString(clientTimeZone);
var localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, clientTimeZoneInfo);

如果这是一个webapp,请使用此javascript将偏移量发送到服务器:

var timeNow = new Date();
var timezone = timeNow.getTimezoneOffset() / 60 * (-1);

然后在您的服务器上:

string clientTimeZoneOffset = "8";
var clientTimeZoneInfo = TimeZoneInfo.CreateCustomTimeZone("client", new TimeSpan(0, Int32.Parse(clientTimeZoneOffset), 0, 0),
            "client", "client");

var utcDateTime = DateTime.UtcNow;
DateTime localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, clientTimeZoneInfo);