使不同时区的时间与京8区一致


    /**
     * 获取绝对时间
     * 即无论你在哪个时区,得到的时间和京8区的时间一致
     *
     * @param {Date} time
     * @returns {years,month, day, hours, minutes, seconds}
     */
    function getAbsTime(time) {
        try {
            var currentZoneTime = new Date(time);
            var currentZoneHours = currentZoneTime.getHours();
            var offsetZone = currentZoneTime.getTimezoneOffset() / 60;
            if(offsetZone > 0) {
                // 大于0的是西区(西区晚) 西区应该用时区绝对值加京八区 重新设置时间
                // 西区时间比东区时间晚 所以加时区间隔
                offsetZone = offsetZone + 8;
                currentZoneTime.setHours(currentZoneHours + offsetZone)
            } else {
                // 小于0的是东区(东区早)  东区时间直接跟京八区相加
                offsetZone += 8;
                currentZoneTime.setHours(currentZoneHours - offsetZone);
            }
            return transfromDate(currentZoneTime)
        } catch(e) {
            throw e
        }
    }

    function transfromDate(time) {
        // 假设time是时间戳,如:1514273945276
        var curDate = new Date(time);
        return curDate ;
        // todo
    }

    // 对Date的扩展,将 Date 转化为指定格式的String
    // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
    // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
    // 例子:
    // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
    // (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
    Date.prototype.Format = function(fmt)
    { //author: meizz
        var o = {
            "M+" : this.getMonth()+1,                 //月份
            "d+" : this.getDate(),                    //日
            "h+" : this.getHours(),                   //小时
            "m+" : this.getMinutes(),                 //分
            "s+" : this.getSeconds(),                 //秒
            "q+" : Math.floor((this.getMonth()+3)/3), //季度
            "S"  : this.getMilliseconds()             //毫秒
        };
        if(/(y+)/.test(fmt))
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
        for(var k in o)
            if(new RegExp("("+ k +")").test(fmt))
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        return fmt;
    }



var rs = getAbsTime(new Date());
var aa = rs.Format("yyyy-MM-dd hh:mm:ss");

https://www.cnblogs.com/fayin/p/8119023.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值