0
我挑选包含某些日期列的数据。从数据库返回的日期是UTC格式。我将这些数据提供给报告查看者,并且希望以本地格式显示日期,并考虑夏令时。使用rdlc报告将夏令时UTC转换为本地时间
我可以从服务器端做到这一点,但我希望根据客户端机器时区进行转换。
有没有办法做到这一点?
我挑选包含某些日期列的数据。从数据库返回的日期是UTC格式。我将这些数据提供给报告查看者,并且希望以本地格式显示日期,并考虑夏令时。使用rdlc报告将夏令时UTC转换为本地时间
我可以从服务器端做到这一点,但我希望根据客户端机器时区进行转换。
有没有办法做到这一点?
您的客户是网页还是.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);