chrome插件开发之:关于处理定时下单的时间点的处理问题

系统显示的时间和插件显示的时间,不知道为什么总有点差,有时候居然差1秒。理论上应该是同步才对。
因为对于这种到点自动购物的软件,如果连时间都抓不准,那这个软件也没什么用途了!
再细研究,发现一个细节:
就是,用户点击自动购物的时间一般都不是整秒!而界面自动显示的时间是整秒显示,如果代码的定时器(setInterval)的开始时间没把握好,肯定会有时间差的!
这个时间差一般在1秒之内。不过对于严谨性来说是差异蛮大了!要尽量将这个差异缩小!
针对这点,我的解决办法是:
在界面显示系统时间的时候,先根据用户点击的毫秒时间(用户肯定是某个毫秒时间点击功能的),找出隔下一秒的毫秒差,然后再设定一个定时器(setTimeout),下一整秒的时候才显示系统时间!
用了这个逻辑之后,基本上,功能显示的系统时间,和电脑的时间是可以对应起来了,基本是同步。
而秒杀的倒计时的显示也是差不多这个逻辑,反正原则上要做到的是:系统时间是多少,就显示多少,一秒不多,一秒也不可以少!
上面说的这些都可以在代码中看到。
附上一个代码,就是格式化时间的,很有用,网上找到的,特意分享一下:

// 对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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值