首页 > Web开发 > 详细

用JS将指定时间转化成用户当地时区的时间

时间:2016-01-28 01:58:20      阅读:198      评论:0      收藏:0      [点我收藏+]

公司的项目是面向海外用户的,但是最初的设计没考虑到时差问题,存入数据库的时间都是东八区的时间,导致现在补救有点坑爹......

有一个需求是,产品详细页需要注明此款产品的开售时间,当海外的用户来访问这个页面时,不应该显示的是东八区的时间,而应该显示当地时区对应的时间。

.net的类库里没有获取客户端当地时区的方法的,比如ToLocalTime(),获取的是服务器的时间,TimeZoneInfo里的一些方法,都是正向转化,必须提供已知的时区编号,时区名称等条件,但这些不是已知时,都是白搭。

查询了资料,发现只能从JS入手,看到有两种解决方案,一种是用ajax传到服务端进行处理,第二种是设置cookie在服务端获取再处理,如果不是大批量的数据呈现,感觉有点麻烦,之后自己写了一个方法,具体方案就是从后台读取的时间,先从前台的JS里转化,再呈现到页面上,具体看业务需求。

直接提供JS方法吧,如有什么不对的地方可以提出来:

        /*
        * 根据日期写入时所在的时区号,传化为客户端所在时区的时间
        *  Create Date:2016-01-27 By Harry  
        *  东:负数,西:正数
        */
        Date.prototype.ToLocalTimeByZoneNum = function (zoneNum) {
            if (isNaN(zoneNum))
                zoneNum = 0;
            this.setHours(this.getHours() + zoneNum);//转化时间为UTC时间
            var clientTime = new Date();//客户端当前时间
            var offset = Math.floor(clientTime.getTimezoneOffset() * 60000)//客户端时间与UTC时间的偏移量(毫秒)
            this.setTime(this.getTime() - offset);//根据偏移量计算传入时间在客户端所在时区的对应时间
            return this;
        }
        //默认传入东八区
        Date.prototype.ToLocalTime = function () {
            this.ToLocalTimeByZoneNum(-8)
            return this;
        }
        //Example
        var localtime = new Date(‘2016-01-27 10:00:00‘).ToLocalTime();

 

用JS将指定时间转化成用户当地时区的时间

原文:http://www.cnblogs.com/simendancer/p/5165023.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!