求购物“秒杀”写法 如何获取服务器时间

zhuxueliao 2011-03-01 03:59:28
开发一个购物网站 现在老板让添加秒杀 不知道如何 获取服务器时间 如何下手 思路不清晰 具体秒杀如何实现 还请各位说说 最好有代码 如果没有了解的说说如何实现最好 也是非常感谢的
...全文
975 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
tubuwuwa 2012-09-01
  • 打赏
  • 举报
回复
根本就不对,DateTime.Now()获取的是用户机器的时间,如果用户改了本机时间,咋办!!!
  • 打赏
  • 举报
回复
就是一个时间的判断 服务器时间到规定时间就执行事件 不到就提示秒杀时间未到、
ms 2011-03-03
  • 打赏
  • 举报
回复
DateTime.Now()获取服务端时间,如果等于你之前设定的“秒杀时间点”就执行你要做的工作。
winner2050 2011-03-02
  • 打赏
  • 举报
回复
你们公司有实力搞秒杀业务吗?

编程、测试、服务器、宣传都是巨大的资金。
哒哒 2011-03-02
  • 打赏
  • 举报
回复
使用timer控件实现倒计时功能,然后到了时间进行判断,给段倒计时的例子

private DateTime dtExam = DateTime.Parse("2010-07-26 17:42:00"); //定义时间到期时间
protected void timerCD_Tick(object sender, EventArgs e)
{
if (this.dtExam < DateTime.Now) //如果设置的时间已过
{
this.timerCD.Enabled = false; //将Timmer置为false
labTimes.Text = "时间到!";
}
else
{
RefreshTime(); //刷新时间
}
}

private void RefreshTime() //刷新时间的方法
{
TimeSpan ts = this.dtExam - DateTime.Now; //时间差
this.labDays.Text = ts.Days.ToString().PadLeft(2, '0') + "天";
this.labTimes.Text = ts.Hours.ToString().PadLeft(2, '0') + ":" + ts.Minutes.ToString().PadLeft(2, '0') + ":" + ts.Seconds.ToString().PadLeft(2, '0');
}

前台代码:
<form id="form1" runat="server">
<div>
 </div>
 <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
时<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>分<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Timer ID="timerCD" runat="server" Interval="1000" OnTick="timerCD_Tick">
</asp:Timer>
<asp:Label ID="labDays" runat="server" Width="155px"></asp:Label><asp:Label ID="labTimes" runat="server" Width="155px"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</form>
沙伽more 2011-03-02
  • 打赏
  • 举报
回复
可以结合 ajax 提供的 timer 控件 使用
V-Far 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 luoweihua7 的回复:]

访问的时候可以获取到服务器的时间。。。
然后传递给js处理。当达到时间的时候就可以点击秒杀按钮。。。
秒杀按钮的事件也应该要加入时间判断吧。。。

问题不大。。。
[/Quote]但是要考虑到很多用户点击时的效率问题,唉。。。。
V-Far 2011-03-02
  • 打赏
  • 举报
回复
访问的时候可以获取到服务器的时间。。。
然后传递给js处理。当达到时间的时候就可以点击秒杀按钮。。。
秒杀按钮的事件也应该要加入时间判断吧。。。

问题不大。。。
hitlcyu19 2011-03-02
  • 打赏
  • 举报
回复
DateTime.Now() 系统时间 写个timer
zhuxueliao 2011-03-02
  • 打赏
  • 举报
回复
7 楼你能贴的全面点吗?谢谢

zhuxueliao 2011-03-02
  • 打赏
  • 举报
回复
还有其他的意见吗?
子夜__ 2011-03-01
  • 打赏
  • 举报
回复
$(document).ready(function() {
//电子电器
var CountdownTImeE = $("input[id*=txtElectronCountdownTime]").val(); //倒计时

if (CountdownTImeE != "" && CountdownTImeE != null) {
var year = CountdownTImeE.split(' ')[0].split('-')[0]; //年
var month = CountdownTImeE.split(' ')[0].split('-')[1]; //月
var day = CountdownTImeE.split(' ')[0].split('-')[2]; //日
var hour = CountdownTImeE.split(' ')[1].split(':')[0]; //时
var min = CountdownTImeE.split(' ')[1].split(':')[1]; //分
var second = CountdownTImeE.split(' ')[1].split(':')[2]; //秒
var time = month + "/" + day + "/" + year + " " + hour + ":" + min + ":" + second;

var endtime = new Date(time); //时间格式:"7/21/2010 09:48:00"
var nowtime = new Date();
var maxtime = (endtime.getTime() - nowtime.getTime()) / 1000;

var timer = setInterval("daojishiE()", 1000);

if (maxtime <= 0) {

$(".xs-qg-qw").eq(0).show();
$(".xs-qg-qg").eq(0).hide();
$(".xs-qg-qw").eq(1).show();
$(".xs-qg-qg").eq(1).hide();
clearInterval(timer);
document.getElementById('showdateElectron').innerHTML = "<i>电子电器:</i><b>剩</b><em>00< /em><b>时</b><em>00</em><b>分< /b><em>00</em><b>秒</b>";
}
daojishiE = function() {
if (maxtime >= 0) {
//day = Math.floor(maxtime / 3600 / 24);
hours = Math.floor(maxtime / 3600);
minutes = Math.floor((maxtime / 60) % 60);
seconds = Math.floor(maxtime % 60);
msg = "<i>电子电器:</i><b>剩</b>" + "<em>" + hours + "</em>" + "<b>时</b>" + "<em>" + minutes + "</em>" + "<b>分</b>" + "<em>" + seconds + "</em>" + "<b>秒</b>";
document.getElementById('showdateElectron').innerHTML = msg;
//if(maxtime == 5*60) alert('注意,还有5分钟!');
--maxtime;
}
else {

var proid = "";
$("#divCountdown input[id='hidProidE']").each(function() {
proid += $(this).val() + ",";
});
$.get("/AjaxBehind/DefaultHandler.ashx", { type: "edit", proidlist: proid }, function(data) {
$("#showdateElectron").html(data);
clearInterval(timer);
window.location = window.location;
});

}
}
}
});



参考
wshqszw1 2011-03-01
  • 打赏
  • 举报
回复

if (DateTime.Compare(pt.EndTime, DateTime.Now) > 0)//时间对比
{
//pt.EndTime就是你数据库设置的结束时间
//秒杀成功的处理代码
}
{
ShowMessageBox("活动已结束,请关注下次活动!");
}

希望对你有用!!
酷儿 2011-03-01
  • 打赏
  • 举报
回复
3楼正解 网上JS显示 倒计时的蛮多的 你的服务器时间就是你调的系统时间
lanxinyiye 2011-03-01
  • 打赏
  • 举报
回复
后台 DateTime.Now 就是服务器时间。再根据你的那 秒杀 结束时间,计算出余下秒数。 返回到界面,通过脚本创建倒计时。当脚本倒计时 为 0 秒,返回至服务器端,重新计算 余下秒秒数,如果为 小于 0,则结束所谓的秒杀倒计时。(开启秒杀,可以通过同样的逆向思路)
lcp147572931 2011-03-01
  • 打赏
  • 举报
回复
你用C#代码取得的时间 就是服务器时间呀
gongsun 2011-03-01
  • 打赏
  • 举报
回复
点击按钮,触发 onclick事件。。。

就这么简单。。。

当服务器到达设定时间,开启添加。(就是一个if判断,当前 服务器时间是否 = 设定时间。)

如果到了。

就是点击一个按钮,添加一条记录。当添加条数达到数目上限,添加设置无效 (这里也是一个判断)。

(1个ip 1分钟内,只记录1条数据...)

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧