JavaScript把世界各地客户端时间转为北京时间,并取得时间戳

1 篇文章 0 订阅
1 篇文章 0 订阅

1、把客户端时间转换为北京时间

     function getBeijingtime() {
            //获得当前运行环境时间
            var d = new Date();
            currentDate = new Date();
            tmpHours = currentDate.getHours();
            //算得时区
            var time_zone = -d.getTimezoneOffset() / 60;
            if (time_zone < 0) {
                time_zone = Math.abs(time_zone) + 8; currentDate.setHours(tmpHours + time_zone);
            } else {
                time_zone -= 8; currentDate.setHours(tmpHours - time_zone);
            }
            return currentDate;
        }

new Date() 方法返回的是本机时间,是带时区的时间。导入参数后返回的是带时区的日期与1970年1月1日相差的毫秒数;

getTimezoneOffset() 方法可返回格林威治时间和本地时间之间的时差,以分钟为单位。

time_zone少于0的是西区 西区应该用时区绝对值加京八区 重新设置时间(西区时间比东区时间早 所以加时区间隔)
大于0的是东区 东区时间直接跟京八区相减

2、获取时间戳

function  getTimeStamp(){
	const currentDate =  getBeijingtime();
	const y = currentDate.getFullYear();   //当前客户端对应的北京时间的年
  	const m = currentDate.getMonth();   //北京时间的月
  	const d = currentDate.getDate();
  	const h = currentDate.getHours();
 	const mm = currentDate.getMinutes();
 	const ss = currentDate.getSeconds();
 	// Date.UTC() 方法接受的参数同日期构造函数接受最多参数时一样,返回从1970-1-1 00:00:00 UTC到指定日期的的毫秒数。
  	const timeObj =Date.UTC(y, m, d, h, mm, ss, 0) / 1000 - (8 * 60 * 60);
  	return timeObj;
}

注意:不能使用getTime()
getTime() 方法的返回值一个数值,表示从1970年1月1日0时0分0秒(UTC,即协调世界时)距离该日期对象(带时区的时间)的毫秒数,那它与北京时间的差值就不一定了,计算起来也很麻烦。

而Date.UTC()返回的是0时区的时间,返回的是0时区的当前日期与1970.1.1相差的毫秒数。那么它与北京时间差值就是固定的8小时;

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值