Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery交付倒计时_Javascript_Jquery_Timer - Fatal编程技术网

Javascript jQuery交付倒计时

Javascript jQuery交付倒计时,javascript,jquery,timer,Javascript,Jquery,Timer,该店的最新发货时间为周一至周五下午5点。我已经想出了如何使用标准JS数据对象创建每天都显示相同内容的东西,这是非常基本的,但并不是我所需要的 有什么想法吗?我应该按照下面代码的样子去做,还是尝试使用类似于moment.js的东西来做 setInterval(function () { var now = new Date(); var year = now.getYear(); var month = now.getMonth(); var day = now.

该店的最新发货时间为周一至周五下午5点。我已经想出了如何使用标准JS数据对象创建每天都显示相同内容的东西,这是非常基本的,但并不是我所需要的

有什么想法吗?我应该按照下面代码的样子去做,还是尝试使用类似于moment.js的东西来做

setInterval(function () {

    var now = new Date();
    var year = now.getYear();
    var month = now.getMonth();
    var day = now.getDay();
    var hour = now.getHours();
    var end;

    if(day >= 1 && day <= 5) {

        // Not the weekend
        if (hour < 17) { 
            // Before 5 not on weekends
            // end = 5 today
            end = new Date(year, month, day, 17, 0, 0, 0);  
            console.log('before 5');
        } else if (hour >= 17 && day == 5) {
            // After 5 on friday. Set for monday
            // end = 5 monday
            //end = new Date(now.getYear(), now.getMonth(), day + 1, 17, 0, 0, 0); 
            console.log('after 5 on friday');
        } else {
            // After 5 monday-thursday
            // end = 5 tomorrow
            console.log('after 5 not on friday');
            end = new Date(year, month, day + 1, 17, 0, 0, 0); 
        }

    } else {
        // Weekend
        // end = next monday
        console.log('Shipped monday');
    }

    var timeleft = end.getTime() - now.getTime();
    var diff = new Date(timeleft);

    console.log("Order now and we ship your order in: " + diff.getHours() + "h " + diff.getMinutes() + "Min " + diff.getSeconds() + "Sec");    

}, 1000);
setInterval(函数(){
var now=新日期();
var year=now.getYear();
var month=now.getMonth();
var day=now.getDay();
var hour=now.getHours();
var端;
如果(天>=1&&day=17&&day==5){
//星期五5点以后。定在星期一
//完(星期一)
//end=新日期(now.getYear(),now.getMonth(),day+1,17,0,0,0);
console.log(“周五5点后”);
}否则{
//星期一星期四5点以后
//完=明天5点
console.log('5点以后不是星期五');
结束=新日期(年、月、日+1、17、0、0、0);
}
}否则{
//周末
//完=下周一
console.log(“周一发货”);
}
var timeleft=end.getTime()-now.getTime();
var diff=新日期(最短时间);
log(“立即订购,我们将您的订单发送到:”+diff.getHours()+“h”+diff.getMinutes()+“Min”+diff.getSeconds()+“Sec”);
}, 1000);
我需要它在下午5点后显示倒计时到第二天的交货时间。周五下午5点后显示周一交货时间,周六和周日也是如此

像这样的

function pad(num){return(“0”+num).slice(-2)}
函数getHHMMSS(毫秒){
var秒=parseInt(ms/1000)%60;
var分钟=parseInt(ms/(1000*60))%60;
var小时=parseInt(ms/(1000*60*60))%24;
控制台日志(解析int(ms/1000)%60)
var str=pad(小时)+“小时”+(小时==1?”:“s”)+“+
记事本(分钟)+“分钟”+(分钟==1?”:“s”)+“+
键盘(秒)+“秒”+(秒==1?”:“s”);
返回str;
}
setInterval(函数(){
var now=new Date();//服务器时间
var end=新日期(now.getTime());
var hour=now.getHours()+now.getMinutes()/60;
如果(小时>17)end.setDate(end.getDate()+1);//今天太晚了
var day=end.getDay();
完二〇〇四年十二月十七日(星期五),;
如果(!(day>=1&&day这应该可以做到:

setInterval(函数(){
var now=新日期();
var missedTodaysDelivery=now.getHours()>=17?1:0;
var end=new Date(now.getFullYear(),now.getMonth(),now.getDate()+missedTodaysDelivery,17,0,0);
var lastCall=新日期(结束);
setDate(now.getDate()+(5-now.getDay());
如果(现在>上次通话){
结束=新日期(上次通话);
end.setDate(end.getDate()+3);
}
var diff=新日期(结束-现在);
diff.setTime(diff.getTime()+1000*60*diff.getTimezoneOffset());
var result=“立即订购,我们将您的订单发送到:”;
结果+=diff.getDate()-1==0?“:diff.getDate()-1+“天”;
结果+=diff.getHours()==0?“:diff.getHours()+“h”;
结果+=diff.getMinutes()==0?“:diff.getMinutes()+“Min”;
结果+=diff.getSeconds()+“秒”;
document.body.innerHTML=结果;

},1000);
我建议您从服务器检索UTC日期,因为从客户端获取日期对于业务关键型操作来说是不可靠的。根据您当前的逻辑,某人可以很容易地更改其系统日期,然后在晚上11:59交付第二天。如果要设置为17,您只需执行
someDate.setHours即可(17,0,0,0)
和pad with
函数pad(num){return(“0”+num).slice(-2)}
@RoryMcCrossan这只是信息性的,它没有做更多。@mplungjan这就是我当时更改日期的方式吗?我曾试图设置日期和时间,但不起作用。我将编辑问题并向您展示我的意思