服务器端世界时间(UTC)转换客户端时区时间
当你的服务器是针对世界各地用户提供服务的时候,如果正好你想正确显示服务器的时间。那么你应该获取正确的服务器时间并转化成客户端本地时间的时间在客户端显示与调用。而不应该像“铁路购票系统”一样直接使用客户端的本地时间而出现一系列有趣的BUG。
那么我们应该如何将服务器的协调世界(UTC)时间转换成我们客户端所在时区的正确时间呢?
我们首先应该了解到的时区概念应该是这样的,比如“北京时间”,相对于“世界时间”要正向偏移8个小时0分钟,表示为“+08 00”;假如世界时间是10点,那么我们计算出来的北京时间应该是,世界时间10点+8个小时0分钟=18点。
下来我们看看我们是如何从服务器获取世界时间并转化成本地时间的。
首先,我们应该知道本地时间的时区时间偏移量:即介绍中的“+08 00”。
我们使用JS方法来获得这个值:
/// <summary> /// 计算客户端所在时区时间 /// </summary> /// <param name="clientTimeOffset">要传入的时区时间偏移值</param> /// <returns>客户端时区时间</returns> public DateTime GetClientTime(string clientTimeOffset) { //获取协调世界时间 DateTime utcTime = DateTime.UtcNow; //按小时,分钟分割时区偏移值 string[] timeOffset = clientTimeOffset.Split(' '); int hourOffset = int.Parse(timeOffset[0]); int minuteOffset = int.Parse(timeOffset[1]); //协调世界时间与时区小时偏移值相加 utcTime = utcTime.AddHours(hourOffset); //协调世界时间与时区分钟偏移值相加 utcTime = utcTime.AddMinutes(minuteOffset); return utcTime; }
通过GetClientTime方法我们能够正确得到客户端所在时区的时间。调用它并返回它就可以放心在客户端应用了。
更多WEB开发技术请加群:Asp.Net高级群 号码:261882616
博主以及同事和你共同探讨感兴趣的话题。