问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

asp.net 商品秒杀倒计时,如何获取服务器端时间?

发布网友 发布时间:2022-04-22 17:25

我来回答

3个回答

懂视网 时间:2022-04-22 21:47

这篇文章主要介绍了关于Javascript实现商品秒杀倒计时(时间与服务器时间同步)的解析,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

在一些购物商城经常看到有很多商品做秒杀活动,也就是倒计时,本篇文章给大家介绍Javascript实现商品秒杀倒计时(时间与服务器时间同步),需要的朋友可以了解下

现在有很多网站都在做秒杀商品,而这其中有一个很重要的环节就是倒计时。

关于倒计时,有下面几点需要注意:

1.应该使用服务器时间而不是本地时间(本地时间存在时区不同、用户自行设置等问题)。

2.要考虑网络传输的耗时。

3.获取时间时可直接从AJAX的响应头中读取(通过getResponseHeader('Date')来获得),服务器端不需要专门写时间生成脚本。

过程分析:

1.从服务器读到一个时间戳之后便开始计时,不考虑网络传输的耗时:


图中的各项标注分别是(上面的时间线采用标准时间,与服务器和页面的时间均无关):

start——页面项服务器发起AJAX请求时的时间。

www_start——服务器响应页面的请求并返回时间戳给页面的时间。

pc_start——页面接受到服务器返回的时间戳并开始计时的时间。

www_end——服务器倒计时结束的时间。

pc_end——页面倒计时结束的时间,同时也是用户在倒计时结束那一刻点击按钮的时间。

end——服务器接收到用户点击信息的时间。

可以看出,即使在倒计时结束的那一刻(也就是秒杀开始那一刻)用户就立即点击鼠标,也会比实际开始抢拍的时间(www_end,即服务器倒计时结束的时间)晚一些(可以很容易的看出,这个时间差正好等于pc_start - start,也就是AJAX从开始发送到接收到响应信息的耗时)。如果有些内行在页面倒计时结束前用脚本发送请求,那么其他用户可就亏大了。所以,我们要解决掉这个时间误差的问题。

2.为了解决时间误差的问题,我们将把页面倒计时的时间缩短一小截(由上面的分析可以得出,这一小截正好等于pc_start - start),使得用户在倒计时结束时发送给服务器的抢拍信息正好在服务器倒计时结束时被接收到:

图中的各项标注与Pic.1中相同(时间线采用标准时间,与服务器和页面的时间均无关),新增的两项标注的含义如下:

old_pc_end——在未对网络传输耗时进行处理的情况下pc_end的时间。

old_end——在未对网络传输耗时进行处理的情况下end的时间。

由Pic.2可见,网络传输耗时造成的时间误差已经完全被弥补了,弥补的方法是“将倒计时结束的时间提前pc_start - start”。但是解决了网络传输耗时造成的误差问题,还有用户电脑时间和服务器时间不相同的问题,下面我们继续讨论。

3.用户的电脑时间和服务器时间一定是有差异的,甚至差几个时区,怎么解决这个问题呢?方法的要点如下:

A. 当页面接收到服务器返回的时间戳www_t时,立即开始计时。

B. 当页面接收到服务器返回的时间戳www_t时,立即计算本地时间和服务器返回的时间戳的时间差t=new Date().getTime() - www_t*1000。

C. 仍然使用new Date().getTime()来计时,而不是使用setInterval()函数(计时器很不稳定,误差也很大),但时间的显示与程序的逻辑必须基于本地时间和上一步(B中)求得的时间偏差t。

结论要点:

页面从接收到服务器响应的时间戳开始计时,计时的时长应减掉AJAX从发送到接收整个过程的耗时,计时过程则使用本地时间来实现(本地时间+时间偏差)。

有任何疑问或建议请留言,谢谢!

javascript小技巧:同步服务器时间、同步倒计时

之前在网上看到有人提问,如何在页面上同步显示服务器的时间,其实实现方法有几种,可能一般人立马就想到可以使用Ajax每隔一秒去请求服务器,然后将服务器获取到时间显示在页面上,这样虽然能够实现,但存在一个很大的问题,那就是每隔一秒去请求服务器,这样如果用户多了,服务器就会崩溃(内存占用率会很大),所以在我看来,这种方法不可行,我这里给出一种解决方案,能够实现同步服务器时间、同步倒计时,却不占用服务器太多资源,下面我给写实现的思路

第一步,当用户第一次浏览页面时,服务器首先获取当前时间并显示在页面上(比如:显示在ID为timebox span中)

第二步,设置一个每隔一秒就计算新的时间(新时间以服务器时间为初始值,然后每隔一秒累加一秒并生成新的时间)

第三步,显示第二步计算的时间

是不是很简单,总结成一句话就是:以服务器时间为初始值,然后在页面上自动每隔一秒就累加一秒生成新时间,这样就能保证与服务器时间同步了,误差基本在几秒内,应该没关系了,好了看一下实现的代码吧:

<span id="timebox">11:21:55</span> //第一次将服务器时间显示在这里
<script type="text/javascript">
 $(function () {
 var oTime = $("#timebox");
 var ts = oTime.text().split(":", 3);
 var tnums = [parseInt(ts[0]), parseInt(ts[1]), parseInt(ts[2])];
 setInterval(function () {
 tnums = getNextTimeNumber(tnums[0], tnums[1], tnums[2]);
 showNewTime(tnums[0], tnums[1], tnums[2]);
 }, 1000);
 function showNewTime(h, m, s) {
 var timeStr = ("0" + h.toString()).substr(-2) + ":"
  + ("0" + m.toString()).substr(-2) + ":"
  + ("0" + s.toString()).substr(-2);
 oTime.text(timeStr);
 }
 function getNextTimeNumber(h, m, s) {
 if (++s == 60) {
 s = 0;
 }
 if (s == 0) {
 if (++m == 60) {
  m = 0;
 }
 }
 if (m == 0) {
 if (++h == 24) {
  h = 0;
 }
 }
 return [h, m, s];
 }
 });
</script>

代码很简单在此就不多作说明(我上面只显示时分秒,大家也可以加上日期,加上日期可在当h==0时,直接从服务器获取一个日期或完整的时间,作为一次时间的校对),不懂的可以在下面评论,我会及时回复的,然后按照这种思路来实现一下同步倒计时,首先说明一下,什么是同步倒计时,就是类似秒杀一样,设置一个结束时间,然后计算当前时间与结束时间之间间隔,而且必需保证在不同的电脑、浏览器上显示的倒计时时间均相同,实现代码如下:

<!DOCTYPE html>
<html>
<head>
 <title>同步倒计时</title>
 <script type="text/javascript" src="jquery-1.4.4.min.js"></script>
</head>
<body>
 <span id="timebox">1天00时00分12秒</span> <!--假设:1天00时00分12秒是从服务器获取的倒计时数据-->
 <script type="text/javascript">
 $(function () {
 var tid = setInterval(function () {
 var oTimebox = $("#timebox");
 var syTime = oTimebox.text();
 var totalSec = getTotalSecond(syTime) - 1;
 if (totalSec >= 0) {
  oTimebox.text(getNewSyTime(totalSec));
 } else {
  clearInterval(tid);
 }
 
 }, 1000);
 
 //根据剩余时间字符串计算出总秒数
 function getTotalSecond(timestr) {
 var reg = /d+/g;
 var timenums = new Array();
 while ((r = reg.exec(timestr)) != null) {
  timenums.push(parseInt(r));
 }
 var second = 0, i = 0;
 if (timenums.length == 4) {
  second += timenums[0] * 24 * 3600;
  i = 1;
 }
 second += timenums[i] * 3600 + timenums[++i] * 60 + timenums[++i];
 return second;
 }
 
 //根据剩余秒数生成时间格式
 function getNewSyTime(sec) {
 var s = sec % 60;
 sec = (sec - s) / 60; //min
 var m = sec % 60;
 sec = (sec - m) / 60; //hour
 var h = sec % 24;
 var d = (sec - h) / 24;//day
 var syTimeStr = "";
 if (d > 0) {
  syTimeStr += d.toString() + "天";
 }
 
 syTimeStr += ("0" + h.toString()).substr(-2) + "时"
  + ("0" + m.toString()).substr(-2) + "分"
  + ("0" + s.toString()).substr(-2) + "秒";
 
 return syTimeStr;
 }
 
 });
 </script>
</body>
</html>

为了保证倒计时的精确度,我采用了先将倒计时时间间隔统一计算成秒,然后减1秒再重新生成时间格式,当然也可以按照上面时间同步的例子,直接进行时间减少,方法很多,我这个不一定是最优的,欢迎大家交流,谢谢!

热心网友 时间:2022-04-22 18:55

asp.net你获取时间时,应该就是服务器的时间。而不是客户端的时间。
除非你用的是前段的js获取的时间,那个时间就是客户端时间。

热心网友 时间:2022-04-22 20:13

String time=DateTime.Now().ToString();

datatime 时间日期类底下的 now方法可以获取当前系统时间
asp.net怎样限时倒计时按键控制?

1、使用js控制,倒计时前,确定按钮不绑定事件,灰色,倒计时结束,确定按钮可用 2、settimeout(),可以实现倒计时,300秒太长,用户可以通过刷新页面跳过你的倒计时 请等待10秒 function run(){ var s = document.getElementById("timer");if(s.innerHTML == 0){ //执行确定点击事件绑定,ret...

asp.net中设置一个按钮在倒计时结束时才可以单击按钮,倒计时和按钮是分...

&lt;输入类型=“按钮”值=“倒计时”的onClick =“timedMsg()”&gt; 请细阅通告:sdfljslkfjlksdjglkjsgdkljgkdjgsdlk

高悬赏!我想用asp.net实现一个指定日期的倒计时间?

这个问题要看你的要求了``~~如果你是要用局部刷新技术就麻烦一\点 ~~~如果把代码都写在后台那就简单~DateTime.Now int year=int.Parse(DateTime.Now.Year);int month=int.Parse(DateTime.Now.Month);int day=int.Parse(DateTime.Now.Day);int m=0;//天数 if(month==1||month==3||month=...

asp.net 急需web版的button控件60秒倒计时c#语言

if ($("#txtMobile").val() == "") { alert('手机号码不可为空'); return false; } $("#btnGetMobileCode").attr("disabled", "disabled"); $("#btnGetMobileCode").val("获取中"); $.get("?action=sms&amp;mobile=" + $(...

asp.net 开发网络考试系统 倒计时功能

用一个timer控件,把interval设为1000(1秒),在Tick事件里处理。protected void Timer1_Tick(object sender, EventArgs e){ if (minute != 0 &amp;&amp; second == 0){ second = 60;minute--;} else if (hour != 0 &amp;&amp; minute == 0 &amp;&amp; second == 0){ minute = 60;hour--;} else if (...

电脑cmd命令大全大学生来看

Nslookup---IP地址侦测器 explorer---打开资源管理器 logoff---注销命令 ts shut dn---60秒倒计时关机命令 lusr mgr.msc---本机用户和组 services.msc---本地服务设置 oo be/ms oo be/a---检查XP是否激活 notepad---打开记事本 clean mgr---垃圾整理...

计算机命令

net start 服务名 开启服务;(如:net start telnet, net start schedule) net stop 服务名 停止某服务 net time \\目标ip 查看对方时间 net time \\目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息 net view 查看本地局域网内开启了哪些共享 net view \\ip 查看...

网页是的是什么

人们可以通过网页浏览器来访问网站,获取自己需要的资讯(信息)或者享受网路服务。在你眼前,出现在显示器上的这个“东西”,就是一个网页。网页实际是一个文件,它存放在世界某个角落的的某一台计算机中,而这台计算机必须是与互联网相连的。网页经由网址(URL)来识别与存取,当我们在浏览器输入网址后,经过一段复杂而又...

谁知道CS中的一些命令呀?

pausable0 是否客户端可暂停游戏 hostname “CSchina.yeah.net CS'Server ” 服务器名字 mp_timelimit 30 更换地图时间 mp_c4timer 45 炸弹倒计时时间 mp_chasecam 0 是否固定镜头(如果选1,进入服务器后只能在固定地点观战,否则未加入队伍的人可以自由观看) mp_forcechasecam 1 死后是否可以自由观看,参数选1...

CS的服务器

pausable 0 是否客户端可暂停游戏 hostname "CSchina.yeah.net CS'Server " 服务器名字 mp_timelimit 30 更换地图时间 mp_c4timer 45 炸弹倒计时时间 mp_chasecam 0 是否固定镜头(如果选1,进入服务器后只能在固定地点观战,否则未加入队伍的人可以自由观看) mp_forcechasecam 1 死后是否可以自由观看,参数为1为...

淘宝秒杀倒计时app js秒杀倒计时 socket服务器端 秒杀倒计时 秒杀倒计时软件 秒杀计时器 淘宝秒杀倒计时不准 微店倒计时秒杀技巧 手机淘宝秒杀倒计时
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如果要去西藏旅游该注意哪些事项? 配一台三千左右的电脑 平时就是玩穿越火线和魔兽 最好FPS能高点 可以... 帮忙看看我的电脑的内存读入测试!什么意思?说明什么? 我家的花,三角梅,就是盘起来的那种,往上盘的主干尖折了,还能长吗?? 上海哪里学琵琶好? 请问在上海杨浦区地铁8号线附近的琴行有没有啊,我想学钢琴,谢谢大家了... 上海杨浦区有哪些地方学乐器和高一课程比较好 上海瀚音琴行怎么样? ipad和手机相册怎么取消同步 现在买郑州到厦门的火车票好买吗? 72岁糖尿病人尿蛋白3 +伴有心衰肾衰胸腔积水肌酐190-240低蛋白贫血能吃蝉蛹补充蛋白吗? 糖尿病人能不能不吃盐酸二甲双胍片只吃格列齐特片可以吗 甲磺吡脲降糖药的作用是什么? 胰岛素抵抗用什么药效果好? 糖尿病可以吃240毫克的蜂蜜吗 门冬胰岛素注射液的药代动力学 关于糖尿病和高血压的疑问 治疗糖尿病注射胰岛素是针好还是胰岛素泵好? 南京哪有卖来得时胰岛素的? 生活垃圾属于什么垃圾分类 9月10号是什么节 9月10日是什么星座? 9月10号什么星座 9月10日什么星座 最近中国联通有没有这么一个套餐,免费办手机卡还送三百元话费 网络销售营业执照怎么办网络销售办理个体工商户还必须有门面房吗?怎么操作办理不需要门面房_百度问一问 我的是联通卡,为什么不是大王卡还会显示免流量? 姐妹可以告诉我吗?有没有月租低流量多接电话免费的联通卡? 为什么联通送两个手机卡,月消费129元免费送宽带送四十G流量,不能用,用了就直接扣话费? 有没有月租低流量多接电话免费的联通卡? 梦见山上滚下矿石追着我跑,山体滑坡,滑下来好多矿石差点把我埋了 松鼠日记爆摇奶茶和果绿茶爆摇奶茶区别? 手摇奶茶是什么梗?有很污的意思吗? 正宗的手摇奶茶怎么做? 《想看在看看过》pdf下载在线阅读全文,求百度网盘云资源 查询身份证绑定多少个 分手后,还是想要看看对方过的好不好是什么原因? 小时候看过的一部古装神话剧,有哪位高人知道说一下吧,很想在看看,谢谢了! 曾经看过一个电影,讲的是一个下小学的故事。很想再看看。 冷风机/降温机有没有净化空气的功能? 分手后,还是想要看看对方过的好不好怎么办? 富士康车间里面的冷风机 现在想要观看十多年前电视上播放过的综艺节目该通过怎么样的途径? 90年代前后播放的电视剧〈伤情〉,想在看看。里面的歌词,忙忙大海无边际,岁月如梭,斗转星移,滚滚江 你心里最想去看看的地方? 如何知道身份证绑定了几个 小时候看过一部动画片很怀念现在想在看看但是忘了名字(貌似是日本动漫吧)那位知道的请告诉我 甩泪悬赏 迅雷看看播放器 在线视频栏 我看过的 在哪里 怎么看上次看过了的 男朋友和我说他想看看我那里,他说他就在电影里面看过,现实中没见过,我有点无语。 怎么查询身份证绑定了几个