JS 跨时区时间解决方案

来源:互联网 发布:股票下跌提醒软件 编辑:程序博客网 时间:2024/05/21 19:47

由于地球的物理运行规律,地球时间被划分有24个时区,每个时区间隔一个小时,所以经常国外出差的朋友们也会关注一下目的地的时区及当地时间。

当然不仅生活中会受时间的影响,对于WEB程序员开发者开发国际化项目时也会遇到不小的麻烦,比如公司WEB服务器在中国,要确保国外客户访问数据的正常与正确性,得考虑跨时区的问题。既要确保服务器时间的统一性,又要确保时间的重要性。

javaScript开发国际化项目有时也会遇到这个问题,以下为本人根据网络查询所得及结合自身项目情况所写的一个获取不同时区时间的函数方法。

    //得到标准时区的时间    function getLocalTime(i) {        //参数i为时区值数字,比如北京为东八区则输入8,西5输入-5,现默认东八区北京时间        var i=i?parseFloat(i):8;         //得到本地时间        var d = new Date();        //得到1970年一月一日到现在的秒数        var local = d.getTime();        //本地时间与GMT时间的时间偏移差        var offset = d.getTimezoneOffset() * 60000;        //得到现在的格林尼治时间        var utcTime = local + offset;        return new Date(utcTime + 3600000 * i);    }
    //转换服务器时区时间    function formatTime(t,utc){        //t传入的时间参数,utc传入的时区参数        if(!t) return;        //获取本地时间        var d=new Date();        //获得本地时区        utc=utc?parseFloat(utc):d.getTimezoneOffset()/60;        //格式化传入时间        var time=new Date(t);        //转换传入时间为本地时间(默认传入服务器时间为东八区时间)        time.setHours(time.getHours()+(utc-8));        //输出时间        var yy=time.getFullYear();        var MM=time.getMonth()+1;        MM=MM<10?'0'+MM:MM;        var dd=time.getDate();        dd=dd<10?'0'+dd:dd;        var hh=time.getHours();        hh=hh<10?'0'+hh:hh;        var mm=time.getMinutes();        mm=mm<10?'0'+mm:mm;        var ss=time.getSeconds();        ss=ss<10?'0'+ss:ss;        var date=yy+'-'+MM+'-'+dd+' '+hh+':'+mm+':'+ss;        return date;    }
0 0