移动端如何写一个相对靠谱的倒数秒杀时间或者说开售时间

开始接到这个需求的时间感觉,诶和倒数计差不多嘛应该很简单,但是细细想来.如果要求的比较高的话还是比较复杂的

第一种方案:获取剩余开售时间

剩余.png

这种方式存在明显的缺陷,就是当App进程被杀死后或者计时器停止之后再次进去界面显示的时间肯定是错误的,不建议使用.

第二种方案:获取开售时间的时间戳

Snip20170104_18.png

通过获取开售时间的时间戳对比本地时间,算出剩余时间相对上面的方便要准确,但是还有一个问题就是当用户修改本地时间之后,如果没有特别要求在最后购买的时候服务器在做一次限制还是可以的,双11的时候特地看了下淘宝的H5页面也是获取的本地时间,但是他在内部的秒杀也是用了其他方法待我下面慢慢道来

第三种方案:开售时间的时间戳与网络校准时间对比

Snip20170103_13.png

与第二种方法相比多加了一步时间校准的过程,网络获取的当前时间与当前本地时间对比,算出的时间差
时间差=本地时间-网络时间
剩余时间=开售时间-(本地时间-时间差)
这种方案还算是比较精确了,但是在断网之后这方法就会失效,不过断网了又能干嘛呢,但是为了精益求精原则分析了大量的材料与App之后,还有一种终极方法,请看下面的第四种方案.

第四种方案:网络校准时间 + 本地时间 + 开机时长同时校准

Snip20170103_15.png

这种方式是对上面的几种方案的强化

Snip20170103_16.png

不知道你们这个图是否能看懂
比如说现在开机时间是1000秒当前网络时间是1点整,第二次启动应用的时候没有网络,开机时间是1600秒,那么当前时间就是1点+1600-1000 = 1点10分这样就算是在断网情况下用户修改了时间还是可以得到相对准确定时间,当然重启之后这个方法就失效了,所以需要判断记录的时间是否比当前时间大.
iOS和Android的获取开机时长的方法都是有的,大家自己去Google百度一下吧

总结

具体实现还是要看具体情况,利用234方案穿插使用应该是能满足大部分的需求的~
猜猜最后我们用了哪种方案~~~~

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,516评论 25赞 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,806评论 4赞 61
  • 今天看到我一位敬爱的女神姐姐为她的粉丝生日写的文章很有感触! 很庆幸,大概是在2008年结缘了这位女神姐姐。那时的...
    谢晓霞阅读 380评论 0赞 2
  • 在《结直肠癌术后辅助化疗出现不良反应怎么办?》一文中,我们讲到平时多喝水,可以降低药物对肾脏的伤害。 有的患者表示...
    好益测阅读 2,932评论 0赞 0
  • clientHeight = height +(top) padding + (bottom)padding cl...
    daisx阅读 933评论 0赞 0

友情链接更多精彩内容