服务器端世界时间(UTC)转换客户端时区时间
2012-11-04 01:27
901 查看
当你的服务器是针对世界各地用户提供服务的时候,如果正好你想正确显示服务器的时间。那么你应该获取正确的服务器时间并转化成客户端本地时间的时间在客户端显示与调用。而不应该像“铁路购票系统”一样直接使用客户端的本地时间而出现一系列有趣的BUG。
那么我们应该如何将服务器的协调世界(UTC)时间转换成我们客户端所在时区的正确时间呢?
我们首先应该了解到的时区概念应该是这样的,比如“北京时间”,相对于“世界时间”要正向偏移8个小时0分钟,表示为“+08 00”;假如世界时间是10点,那么我们计算出来的北京时间应该是,世界时间10点+8个小时0分钟=18点。
下来我们看看我们是如何从服务器获取世界时间并转化成本地时间的。
首先,我们应该知道本地时间的时区时间偏移量:即介绍中的“+08 00”。
我们使用JS方法来获得这个值:
使用上面方法能很方便的获取时区时间偏移值。
接下来我们应该使用ajax或者页面回发的方式调用服务器端方法。基于情况不同,调用服务器端方法略。
我们的服务器端方法首先会先获得当前的“协调世界(UTC)时间”,再同“时区时间偏移值”相加的方式来得到客户端时间。
方法如下:
通过GetClientTime方法我们能够正确得到客户端所在时区的时间。调用它并返回它就可以放心在客户端应用了。
更多WEB开发技术请加群:Asp.Net高级群 号码:261882616
博主以及同事和你共同探讨感兴趣的话题。
那么我们应该如何将服务器的协调世界(UTC)时间转换成我们客户端所在时区的正确时间呢?
我们首先应该了解到的时区概念应该是这样的,比如“北京时间”,相对于“世界时间”要正向偏移8个小时0分钟,表示为“+08 00”;假如世界时间是10点,那么我们计算出来的北京时间应该是,世界时间10点+8个小时0分钟=18点。
下来我们看看我们是如何从服务器获取世界时间并转化成本地时间的。
首先,我们应该知道本地时间的时区时间偏移量:即介绍中的“+08 00”。
我们使用JS方法来获得这个值:
function clientTimeZone() { //获得时区偏移量 var timeOffset = new Date().getTimezoneOffset(); //获得时区小时偏移基数 var hour = parseInt(timeOffset / 60); //获得时区分钟偏移基数 var munite = timeOffset % 60; var prefix = "-"; if (hour < 0 || munite < 0) { prefix = "+"; hour = -hour; if (munite < 0) { munite = -munite; } } hour += " "; munite += " "; if (hour.length == 2) { hour = "0" + hour; } if (munite.length == 2) { munite = "0" + munite; } return prefix + hour + munite; }
使用上面方法能很方便的获取时区时间偏移值。
接下来我们应该使用ajax或者页面回发的方式调用服务器端方法。基于情况不同,调用服务器端方法略。
我们的服务器端方法首先会先获得当前的“协调世界(UTC)时间”,再同“时区时间偏移值”相加的方式来得到客户端时间。
方法如下:
/// <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
博主以及同事和你共同探讨感兴趣的话题。
相关文章推荐
- 服务器端世界时间(UTC)转换客户端时区时间
- 服务器端世界时间(UTC)转换客户端时区时间
- NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间
- NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间
- .NET 客户端把服务端的UTC 时间转换成Local 时间
- utc时间和不同时区之间的转换程序
- 24时区来源,CST,CET,UTC,DST,Unix时间戳概述、关系、转换
- iOS时间转换当地时区
- utc时间转换localtime
- java将UTC时间转换成本地时间
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- C#获取客户端UTC时间及其总毫秒数解决方案
- IB_CONVERT_FROM_TIMESTAMP,IB_CONVERT_INTO_TIMESTAMP 转换日期时间的时区
- 24时区,GMT,UTC,DST,CST时间详解
- NSDateFormatter转换时间字符串时的时区问题
- 如何把本地时间转换成UTC(通用时间)
- 关于客户端与数据库服务器端的时间同步问题
- C/C++标准库之转换UTC时间到local本地时间详解