首页 新闻 搜索 专区 学院

.net倒计时

0
[已解决问题] 解决于 2010-11-19 15:34

我做的是一个电子商务网站,需要做一个限时抢购,请问各位高手怎么做啊,我是用.NET做的,时间是从数据库读取出来的!

问题补充: 每过一秒数据库就减一!
°潶、緤°的主页 °潶、緤° | 初学一级 | 园豆:17
提问于:2010-11-12 11:14
< >
分享
最佳答案
0

不用修改数据库的时间,因为服务器系统时间在变只需要获取这个差值就可以了...给你个参考吧从我的团购部分剥离出来的

 

客户端
<p id="timeCounter">
       <span class="day"><em>0</em></span><br/><span class="hour"><em>0</em>小时</span>
       <span class="minute"><em>0</em></span><span class="second"><em>0</em></span>
 </p>
 
var lefttime = <%=LeftTime%>;
var begintime = 0;
var updateInterval = 60000;
$(
function () {
begintime
= new Date().getTime();
ShowTimeCounter();
})

function ShowTimeCounter() {
var nowtime = new Date().getTime();
var SysSecond = Math.round(lefttime - (nowtime - begintime) / 1000);
if (SysSecond < 0) {
clearTimeout(T1);
$(
".buy_success").html("<p><span>报名时间已结束</span></p>");
return;
}
var day = SysSecond / (24 * 60 * 60)
var day = Math.floor(day); //相差的总天数
SysSecond = SysSecond - day * 24 * 60 * 60; //抛去相差天数后的秒数
var hour = (SysSecond / (60 * 60));
var hour = Math.floor(hour); //相差的小时数
var SysSecond = SysSecond - hour * 60 * 60; //抛去相差小时后的秒数
var min = SysSecond / 60;
var min = Math.floor(min); //相差的分钟数
var SysSecond = SysSecond - min * 60; //抛去相差分钟后的秒数
var sec = SysSecond;
day
= (day + "").length == 1 ? "0" + day : day;
hour
= (hour + "").length == 1 ? "0" + hour : hour;
min
= (min + "").length == 1 ? "0" + min : min;
sec
= (sec + "").length == 1 ? "0" + sec : sec;
$(
"#timeCounter").html("<span class=\"day\"><em>" + day
+ "</em>天</span><span class=\"hour\"><em>" + hour
+ "</em>小时</span><br/><span class=\"minute\"><em>" + min
+ "</em>分</span><span class=\"second\"><em>" + sec
+ "</em>秒</span>");

var T1 = setTimeout(ShowTimeCounter, 1000);
}

 

 

服务器端

double m_LeftTime = Utilities.DateDiff(EndTime, DateTime.Now).TotalSeconds;
LeftTime
= m_LeftTime.ToString("0");

/// <summary>
/// 计算两个日期的时间间隔
/// </summary>
/// <param name="DateTime1">第一个日期和时间</param>
/// <param name="DateTime2">第二个日期和时间</param>
/// <returns></returns>
public static TimeSpan DateDiff(DateTime DateTime1, DateTime DateTime2)
{
TimeSpan ts1
= new TimeSpan(DateTime1.Ticks);
TimeSpan ts2
= new TimeSpan(DateTime2.Ticks);
TimeSpan ts
= ts1.Subtract(ts2);
return ts;
}
三桂 | 老鸟四级 |园豆:3565 | 2010-11-12 13:34
其他回答(3)
0

settimeout?

写代码的小2B | 园豆:4346 (老鸟四级) | 2010-11-12 11:22
你光说个这个我不了解啊
支持(0) 反对(0) °潶、緤° | 园豆:17 (初学一级) | 2010-11-12 11:34
0

写个作业或程序来单独跑你那限时抢购。。。

另请教下:每过一秒数据库就减一,貌似有点设计缺陷吧,你就是一个限时抢购功能,建议把它给成时间字段,用当前时间与你所设置的时间对比,超过当前时间就不能抢购,

like%'远远'% | 园豆:656 (小虾三级) | 2010-11-12 11:47
0

1.倒计时的效果你可以用js实现,网上有很多的例子。

2.抢购的问题个人觉得你不用想的太复杂,用户点击抢购按钮的时候,你就判断一下数据库的“限时”和当前的系统时间。

菜鸟意见 仅供参考!

谢T | 园豆:17 (初学一级) | 2010-11-12 11:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册