2013-12-19 42 views
0

我挑选包含某些日期列的数据。从数据库返回的日期是UTC格式。我将这些数据提供给报告查看者,并且希望以本地格式显示日期,并考虑夏令时。使用rdlc报告将夏令时UTC转换为本地时间

我可以从服务器端做到这一点,但我希望根据客户端机器时区进行转换。

有没有办法做到这一点?

回答

0

您的客户是网页还是.NET应用程序?如果它是一个.NET应用程序,你可以这样做。首先把你的客户时区到您的服务器,像这样:

string clientTimeZone = TimeZoneInfo.Local.ToSerializedString(); 

那么你的服务器上:

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

如果这是一个Web应用程序使用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); 
相关问题