我拿起包含一些日期列的数据。从数据库返回的日期为 UTC 格式。考虑到夏令时,我将此数据提供给报告查看器并希望以本地格式显示日期。
我可以从服务器端执行此操作,但我希望根据客户端计算机时区进行转换。
有什么办法吗?
我拿起包含一些日期列的数据。从数据库返回的日期为 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);