Javascript 如何创建在特定时间重置的倒计时
首先,我要说的是,我对javascript没有深入的理解,但我知道如何用自己的方式为页面编写小脚本。我的一个客户需要我为网站做以下工作:Javascript 如何创建在特定时间重置的倒计时,javascript,datetime,time,timer,Javascript,Datetime,Time,Timer,首先,我要说的是,我对javascript没有深入的理解,但我知道如何用自己的方式为页面编写小脚本。我的一个客户需要我为网站做以下工作: 在用户的计算机上查找用户的本地时间 把当地时间从下午6点减去 以倒计时的形式显示该时间,或者只显示一条语句,让用户知道当天还有多少时间发货 下午6点后,时间重置或消失,直到下一个工作日 到目前为止,我已经能够创建从本地计算机获取时间的逻辑。我想我可以使用datejs,但它不计算一天中的小时数 以下是我的当前代码: var currentTime = new D
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
var suffix = "AM";
if (hours >= 12)
{
suffix = "PM";
hours = hours - 12;
}
var suffix = "AM";
if (hours >= 12)
{
suffix = "PM";
hours = hours - 12;
}
if (hours == 0)
{
hours = 12;
}
if (minutes < 10)
minutes = "0" + minutes;
document.write("<b>" + hours + ":" + minutes + " " + suffix + "</b>");
var currentTime=新日期()
var hours=currentTime.getHours()
var minutes=currentTime.getMinutes()
var suffix=“AM”;
如果(小时数>=12)
{
后缀=“PM”;
小时=小时-12;
}
var suffix=“AM”;
如果(小时数>=12)
{
后缀=“PM”;
小时=小时-12;
}
如果(小时==0)
{
小时=12;
}
如果(分钟<10)
分钟=“0”+分钟;
文件。写(“+hours+”:“+minutes+”+后缀+”);
这个怎么样:
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
var suffix = "AM";
if (hours >= 12) {
suffix = "PM";
hours = hours - 12;
}
if (minutes < 10)
minutes = "0" + minutes
if (suffix == "PM" && hours >= 6)
{
document.write("You're too late for next day shipping!");
}
else
{
var hoursLeft = 5 - hours;
var minsLeft = 60 - minutes;
document.write("<b> You've got " + hoursLeft + " hours and " + minsLeft + " minutes left to qualify for next day shipping! </b>")
}
var currentTime=新日期()
var hours=currentTime.getHours()
var minutes=currentTime.getMinutes()
var suffix=“AM”;
如果(小时数>=12){
后缀=“PM”;
小时=小时-12;
}
如果(分钟<10)
分钟数=“0”+分钟数
如果(后缀==“PM”&&hours>=6)
{
文档。写下(“你来不及第二天发货了!”);
}
其他的
{
var hoursLeft=5小时;
var minsLeft=60分钟;
文档。写下(“您还有“+hoursleet+”小时和“+minsleet+”分钟的时间来满足第二天发货的条件!”)
}
如果这个网站允许我对其他人的答案发表评论,我会把这归功于乔瓦尼,但由于我还不能对其他人的工作发表评论,以下是需要改变的地方
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
var suffix = "AM";
if (minutes < 10)
minutes = "0" + minutes
if (hours >= 18)
{
document.write("You're too late for next day shipping!");
}
else
{
var hoursLeft = 17 - hours;
var minsLeft = 60 - minutes;
if(minsLeft==60){
minsLeft=0;
hoursLeft++;
}
document.write("<b> You've got " + hoursLeft + " and " + minsLeft + " minutes left to qualify for next day shipping! </b>")
}
var currentTime=新日期()
var hours=currentTime.getHours()
var minutes=currentTime.getMinutes()
var suffix=“AM”;
如果(分钟<10)
分钟数=“0”+分钟数
如果(小时数>=18)
{
文档。写下(“你来不及第二天发货了!”);
}
其他的
{
var hoursLeft=17小时;
var minsLeft=60分钟;
如果(分钟左==60){
最小左=0;
hoursLeft++;
}
文档。写下(“您还有“+hoursleet+”和“+minsleet+”分钟的时间可以进行第二天的发货!”)
}
原因是,上午5点订购的人可能会认为他们必须在下一个小时内提交,以便第二天发货,而实际上他们还有13个小时
编辑:看到了您的时区问题,这篇文章可能会引起您的兴趣
编辑2:发布了错误的链接。正确的答案现在应该已经出来了,尽管它可能有点过时。我昨天也解决了类似的问题,所以这很容易。以下是javascript代码:
功能启动加载(最后一小时){
var timeout_message=document.getElementById('timeout_message');
var currentTime=新日期();
var hours=currentTime.getHours();
var minutes=currentTime.getMinutes();
var seconds=currentTime.getSeconds();
var expire\u time=0;//以秒为单位
如果(小时0){
小时=数学楼层(剩余/3600);
分钟=数学楼层((剩余-小时*3600)/60);
秒=剩余的%60;
timeout_message.innerHTML='倒计时将在'+hours+'hours'+minutes+'min.+seconds+'sec'后停止';
setTimeout(倒计时会话超时,1000);
}否则{
timeout_message.innerHTML=‘时间到了!’;
}
}
倒计时会话超时();
}
完整脚本@在这里。这是一个简单的倒计时计时器,从函数运行后30秒开始,到0秒结束。达到0后,它会自动重置计数器。它又回到30秒,这个过程在一个循环中继续 window.onload=function(){startCountDown(30, 1000,myFunction);} 函数startCountDown(i,p,f){var pause=p;var fn=f; var countDownObj=document.getElementById(“倒计时”); countDownObj.count=函数(i){ //写出计数 countDownObj.innerHTML=i; 如果(i==0){ //执行函数 //fn(); 开始计数(301000,myFunction);//停止 return;}setTimeout(函数(){ //重复 倒计时对象计数(i-1); }, 暂停 );}//将其设置为倒计时obj.count(i);} 函数myFunction(){};
这假设客户在同一时区,这不是一个安全的假设。如何处理javascript中的时区偏移。。。我不确定。@Giovanni B:你必须得到客户的位置,然后选择正确的时区。太好了!非常感谢GiovanniBScott,我刚刚测试了你的代码,当我改变时间时,它工作了。再次感谢您和Giovanni的帮助。如果当前时间是
新日期(2012,6,18,0,0,0,0)
则输出显示您还有17到60分钟的时间,而不是18小时。@andyb编辑以解决此问题。谢谢。@NinaMorena我在if检查中犯了一个愚蠢的错误,只使用了=
而不是=
。它不应该再给那个问题了。不,我的信用,不!!!嘿,谢谢你修改了我的密码。我只是在没有彻底测试的情况下给出了一个几乎没有答案的答案。。。我真丢脸。好消息@Scottmalongs除了您正在进行的任何其他测试外,请记住测试夏令时日期,否则,x小时
输出可能会超出+/-1小时
window.onload = function() { startCountDown(30,
1000, myFunction); }
function startCountDown(i, p, f) { var pause = p; var fn = f;
var countDownObj = document.getElementById("countDown");
countDownObj.count = function(i) {
//write out count
countDownObj.innerHTML = i;
if (i == 0) {
//execute function
//fn();
startCountDown(30, 1000, myFunction); //stop
return; } setTimeout(function() {
// repeat
countDownObj.count(i - 1);
},
pause
); } //set it going countDownObj.count(i); }
function myFunction(){};
</script>