JS倒计时程序获取准确服务器时间的几种方式

首先抛出问题:
在程序开发过程中遇到前台进行倒数计时功能的案例时,遇到了获取准确时间问题,
简单的情况:
前台获取服务器时间,直接在客户端(浏览器)进行 new Date() 进行相减操作。
出现问题:当客户端机器时间更改 此时 new Date() 时间也会随时更改(问题大了!!)

下面抛出几种结局方法:
1、自我消减法
第一次从服务端获取时间戳(或其他时间格式),分配到模板。(以下涉及代码均为简单演示,请很据实际情况修改)

$this->assign('unixTime',($stopTime - time())*1000;	 //分配变量到模板 (至于为什么*1000 接着看)

  

前端使用JS获取该变量,进行自减操作

unixTime = Number(unixTime);	 //强制转成整型
setInterval(function(){
var d = new Date(unixTime);	 // new Date() 时时间戳必须为 number 类型
var str = d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();	//组合时间格式
//此时时间格式为:2012-12-26 9:53:58 并每秒 -1

//此处为您的逻辑代码,例如把串追加到某个元素内。
unixTime-=1000;
},1000)

  

2、实时获取法
!严重不可取!
之前遇到过有人这么用,可能是没经过大脑考虑。
原理就是一个死循环试试异步请求服务器获取时间

setInterval(function(){
$.get(url,{},function(d){	//实时请求服务器获取当前时间
// d 为服务端时间
//您的逻辑代码
})
},1000)

  


此方法出现问题是,一直在向服务器发送请求,也会出现网络延迟情况发生(一次跑几秒);

先写一点后补...感冒了不太舒服

 

转载于:https://www.cnblogs.com/wendywu/archive/2012/12/26/2833475.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值