Javascript 当所有其他浏览器都正确显示时,为什么IE显示NaN

Javascript 当所有其他浏览器都正确显示时,为什么IE显示NaN,javascript,date,internet-explorer,math,Javascript,Date,Internet Explorer,Math,我正在使用倒计时脚本。我已经能够在Google Chrome、Microsoft Edge、Mozilla Firefox上成功获得我想要的结果,但是当我转到Microsoft Internet Explorer 11时,结果显示分钟和秒的倒计时为NaN 这是我正在使用的脚本 <script> var today = new Date(); var DD = today.getDate(); var MM = today.getMonth()+1; //January is

我正在使用倒计时脚本。我已经能够在Google Chrome、Microsoft Edge、Mozilla Firefox上成功获得我想要的结果,但是当我转到Microsoft Internet Explorer 11时,结果显示分钟和秒的倒计时为NaN

这是我正在使用的脚本

 <script>
 var today = new Date();
 var DD = today.getDate();
 var MM = today.getMonth()+1; //January is 0!
 var YYYY = today.getFullYear();
 //let get the Difference in Sec btw the two dates
 var _DateFromDBProgEndDate = '<?php echo $query->Cutoff; ?>';
 var ProgEndTime = new Date(_DateFromDBProgEndDate);
 var TodayTime = new Date();

 var differenceTravel = ProgEndTime.getTime()- TodayTime.getTime() ;
 var seconds = Math.floor((differenceTravel) / (1000));

 var SecDiffFromToday = seconds;
 var seconds = SecDiffFromToday;
 function timer() {
     var days        = Math.floor(seconds/24/60/60);
     var hoursLeft   = Math.floor((seconds) - (days*86400));
     var hours       = Math.floor(hoursLeft/3600);
     var minutesLeft = Math.floor((hoursLeft) - (hours*3600));
     var minutes     = Math.floor(minutesLeft/60);
     var remainingSeconds = seconds % 60;
     if (remainingSeconds < 10) {
         remainingSeconds = "0" + remainingSeconds; 
     }
     if (minutes < 10) {
       minutes = "0" + minutes; 
     }
     document.getElementById('countdown').innerHTML = minutes + ":" + remainingSeconds + " REMAINING";

    if (minutes > 15) {

        document.getElementById('countdown').innerHTML = "";
    }
if (hours > 0) {

    document.getElementById('countdown').innerHTML = "";
}

if (seconds == 0) {
    clearInterval(countdownTimer);
    document.getElementById('countdown').innerHTML = "CLOSED";
} else {
    seconds--;
  }
 }
 var countdownTimer = setInterval('timer()', 1000);
 </script>

var today=新日期();
var DD=today.getDate();
var MM=today.getMonth()+1//一月是零!
var YYYY=today.getFullYear();
//让我们看看这两个日期之间的差异
var_DateFromDBProgEndDate='';
var ProgEndTime=新日期(_DateFromDBProgEndDate);
var TodayTime=新日期();
var differenceTravel=ProgEndTime.getTime()-TodayTime.getTime();
var秒=数学地板((差程)/(1000));
var secdiffromtoday=秒;
var seconds=SecDiffFromToday;
函数计时器(){
变量天数=数学下限(秒/24/60/60);
var hoursLeft=数学地板((秒)-(天*86400));
var小时=数学楼层(左小时/3600);
var Minutesleet=数学楼层((小时左)-(小时*3600));
var分钟=数学楼层(左分钟/60);
var剩余秒数=秒数%60;
如果(剩余秒数<10){
剩余秒数=“0”+剩余秒数;
}
如果(分钟<10){
分钟=“0”+分钟;
}
document.getElementById('countdown').innerHTML=minutes+“:”+remainingSeconds+“剩余”;
如果(分钟>15){
document.getElementById('countdown')。innerHTML=“”;
}
如果(小时数>0){
document.getElementById('countdown')。innerHTML=“”;
}
如果(秒==0){
清除间隔(倒计时);
document.getElementById('countdown').innerHTML=“CLOSED”;
}否则{
秒--;
}
}
var countdownTimer=setInterval('timer()',1000);
基本上,脚本会比较当前日期和截止日期,并生成两者之间的时间差。然后根据结果显示倒计时。除了IE之外,所有的浏览器都能像我所希望的那样工作,有人能帮我找出原因吗

编辑

当我回显$query->Cutoff时;日期/时间结果为yyyy mm dd hh:mm:ss

在浏览器中查看代码时,显示为

 <script>
 var today = new Date();
 var DD = today.getDate();
 var MM = today.getMonth()+1; //January is 0!
 var YYYY = today.getFullYear();
 //let get the Difference in Sec btw the two dates
 var _DateFromDBProgEndDate = '2018-07-18 23:15:00';
 var ProgEndTime = new Date(_DateFromDBProgEndDate);
 var TodayTime = new Date();

 var differenceTravel = ProgEndTime.getTime()- TodayTime.getTime() ;
 var seconds = Math.floor((differenceTravel) / (1000));

 var SecDiffFromToday = seconds;
 var seconds = SecDiffFromToday;
 function timer() {
    var days        = Math.floor(seconds/24/60/60);
    var hoursLeft   = Math.floor((seconds) - (days*86400));
    var hours       = Math.floor(hoursLeft/3600);
    var minutesLeft = Math.floor((hoursLeft) - (hours*3600));
    var minutes     = Math.floor(minutesLeft/60);
    var remainingSeconds = seconds % 60;
    if (remainingSeconds < 10) {
        remainingSeconds = "0" + remainingSeconds; 
    }
    if (minutes < 10) {
        minutes = "0" + minutes; 
    }
     document.getElementById('countdown').innerHTML = "minutes + ":" + remainingSeconds + " REMAINING";

    if (minutes > 15) {

        document.getElementById('countdown').innerHTML = "";
    }
    if (hours > 0) {

        document.getElementById('countdown').innerHTML = "";
    }

    if (seconds == 0) {
        clearInterval(countdownTimer);
        document.getElementById('countdown').innerHTML = "CLOSED";
    } else {
        seconds--;
    }
 }
 var countdownTimer = setInterval('timer()', 1000);
 </script>

var today=新日期();
var DD=today.getDate();
var MM=today.getMonth()+1//一月是零!
var YYYY=today.getFullYear();
//让我们看看这两个日期之间的差异
var_DateFromDBProgEndDate='2018-07-18 23:15:00';
var ProgEndTime=新日期(_DateFromDBProgEndDate);
var TodayTime=新日期();
var differenceTravel=ProgEndTime.getTime()-TodayTime.getTime();
var秒=数学地板((差程)/(1000));
var secdiffromtoday=秒;
var seconds=SecDiffFromToday;
函数计时器(){
变量天数=数学下限(秒/24/60/60);
var hoursLeft=数学地板((秒)-(天*86400));
var小时=数学楼层(左小时/3600);
var Minutesleet=数学楼层((小时左)-(小时*3600));
var分钟=数学楼层(左分钟/60);
var剩余秒数=秒数%60;
如果(剩余秒数<10){
剩余秒数=“0”+剩余秒数;
}
如果(分钟<10){
分钟=“0”+分钟;
}
document.getElementById('countdown').innerHTML=“分钟+”:“+remainingSeconds+“剩余”;
如果(分钟>15){
document.getElementById('countdown')。innerHTML=“”;
}
如果(小时数>0){
document.getElementById('countdown')。innerHTML=“”;
}
如果(秒==0){
清除间隔(倒计时);
document.getElementById('countdown').innerHTML=“CLOSED”;
}否则{
秒--;
}
}
var countdownTimer=setInterval('timer()',1000);
更新


在社区的建议下,我能够将这一点整理出来,并使其在所有浏览器中都能工作,包括可怕的IE lol。下面是我编辑的代码,我尝试对更改的位置进行评论,以便更好地为其他人描述解决方案

这是最后的剧本

 <script>
 var today = new Date();
 var DD = today.getDate();
 var MM = today.getMonth()+1; //January is 0!
 var YYYY = today.getFullYear();
 //let get the Difference in Sec btw the two dates
 // UPDATED HERE
 // I have updated the echo to control the output of the date/time. by doing this i can better control the output and equally successfully appease the IE Gods.
 var _DateFromDBProgEndDate = '<?php echo  date('Y/m/d H:i:s', strtotime($query->Cutoff)); ?>'; 
 var ProgEndTime = new Date(_DateFromDBProgEndDate);
 var TodayTime = new Date();

 var differenceTravel = ProgEndTime.getTime()- TodayTime.getTime() ;
 var seconds = Math.floor((differenceTravel) / (1000));

 var SecDiffFromToday = seconds;
 var seconds = SecDiffFromToday;
 function timer() {
     var days        = Math.floor(seconds/24/60/60);
     var hoursLeft   = Math.floor((seconds) - (days*86400));
     var hours       = Math.floor(hoursLeft/3600);
     var minutesLeft = Math.floor((hoursLeft) - (hours*3600));
     var minutes     = Math.floor(minutesLeft/60);
     var remainingSeconds = seconds % 60;
     if (remainingSeconds < 10) {
         remainingSeconds = "0" + remainingSeconds; 
     }
     if (minutes < 10) {
       minutes = "0" + minutes; 
     }
     document.getElementById('countdown').innerHTML = minutes + ":" + remainingSeconds + " REMAINING";

    if (minutes > 15) {

        document.getElementById('countdown').innerHTML = "";
    }
if (hours > 0) {

    document.getElementById('countdown').innerHTML = "";
}

if (seconds == 0) {
    clearInterval(countdownTimer);
    document.getElementById('countdown').innerHTML = "CLOSED";
} else {
    seconds--;
  }
 }
 var countdownTimer = setInterval('timer()', 1000);
 </script>
<script>
 var today = new Date();
 var DD = today.getDate();
 var MM = today.getMonth()+1; //January is 0!
 var YYYY = today.getFullYear();
 //let get the Difference in Sec btw the two dates
 // UPDATED HERE
 // I have updated the echo to control the output of the date/time. by doing this i can better control the output and equally successfully appease the IE Gods.
 var _DateFromDBProgEndDate = '<?php echo  date('Y/m/d H:i:s', strtotime($query->Cutoff)); ?>'; 
 var ProgEndTime = new Date(_DateFromDBProgEndDate);
 var TodayTime = new Date();

 var differenceTravel = ProgEndTime.getTime()- TodayTime.getTime() ;
 var seconds = Math.floor((differenceTravel) / (1000));

 var SecDiffFromToday = seconds;
 var seconds = SecDiffFromToday;
 function timer() {
     var days        = Math.floor(seconds/24/60/60);
     var hoursLeft   = Math.floor((seconds) - (days*86400));
     var hours       = Math.floor(hoursLeft/3600);
     var minutesLeft = Math.floor((hoursLeft) - (hours*3600));
     var minutes     = Math.floor(minutesLeft/60);
     var remainingSeconds = seconds % 60;
     if (remainingSeconds < 10) {
         remainingSeconds = "0" + remainingSeconds; 
     }
     if (minutes < 10) {
       minutes = "0" + minutes; 
     }
     document.getElementById('countdown').innerHTML = minutes + ":" + remainingSeconds + " REMAINING";

    if (minutes > 15) {

        document.getElementById('countdown').innerHTML = "";
    }
if (hours > 0) {

    document.getElementById('countdown').innerHTML = "";
}

if (seconds == 0) {
    clearInterval(countdownTimer);
    document.getElementById('countdown').innerHTML = "CLOSED";
} else {
    seconds--;
  }
 }
 var countdownTimer = setInterval('timer()', 1000);
 </script>

var today=新日期();
var DD=today.getDate();
var MM=today.getMonth()+1;//一月是0!
var YYYY=today.getFullYear();
//让我们看看这两个日期之间的差异
//在此更新
//我已经更新了echo以控制日期/时间的输出。通过这样做,我可以更好地控制输出,并同样成功地安抚IE神。
var_DateFromDBProgEndDate='';
var ProgEndTime=新日期(_DateFromDBProgEndDate);
var TodayTime=新日期();
var differenceTravel=ProgEndTime.getTime()-TodayTime.getTime();
var秒=数学地板((差程)/(1000));
var secdiffromtoday=秒;
var seconds=SecDiffFromToday;
函数计时器(){
变量天数=数学下限(秒/24/60/60);
var hoursLeft=数学地板((秒)-(天*86400));
var小时=数学楼层(左小时/3600);
var Minutesleet=数学楼层((小时左)-(小时*3600));
var分钟=数学楼层(左分钟/60);
var剩余秒数=秒数%60;
如果(剩余秒数<10){
剩余秒数=“0”+剩余秒数;
}
如果(分钟<10){
分钟=“0”+分钟;
}
document.getElementById('countdown').innerHTML=minutes+“:”+remainingSeconds+“剩余”;
如果(分钟>15){
document.getElementById('countdown')。innerHTML=“”;
}
如果(小时数>0){
document.getElementById('countdown')。innerHTML=“”;
}
如果(秒==0){
清除间隔(倒计时);
document.getElementById('countdown').innerHTML=“CLOSED”;
}否则{
秒--;
}
}
var countdownTimer=setInterval('timer()',1000);

非常感谢所有帮助我并为我指明正确方向的人。

在社区的建议下,我能够解决这个问题,并让它发挥作用
  // added in the date values via php in order to get the server time as opposed to the client times for a more accurate countdown.
<?php
    date_default_timezone_set('America/Toronto');
    $currentdate =  date("o/n/N");
    $currentday = date("N");
    $currentmonth = date("n");
    $currentyear = date("o");
    $currenttime= date("Y/m/d H:i:s");
?>
<script>
var today = <?php echo $currentdate; ?>;
var DD = <?php echo $currentday; ?>;
var MM = <?php echo $currentmonth; ?>; //January is 0!
var YYYY = <?php echo $currentyear; ?>;
//let get the Difference in Sec btw the two dates
var _DateFromDBProgEndDate = '<?php echo date('Y/m/d H:i:s', strtotime($inpersonresult->BidCutoff)); ?>';
var ProgEndTime = new Date(_DateFromDBProgEndDate);
var _TodayTime = '<?php echo date('Y/m/d H:i:s', strtotime($currenttime)); ?>';
var TimeOfToday = new Date(_TodayTime);

var differenceTravel = ProgEndTime.getTime()- TimeOfToday.getTime() ;
var seconds = Math.floor((differenceTravel) / (1000));

var SecDiffFromToday = seconds;
var seconds = SecDiffFromToday;
function timer() {
    var days        = Math.floor(seconds/24/60/60);
    var hoursLeft   = Math.floor((seconds) - (days*86400));
    var hours       = Math.floor(hoursLeft/3600);
    var minutesLeft = Math.floor((hoursLeft) - (hours*3600));
    var minutes     = Math.floor(minutesLeft/60);
    var remainingSeconds = seconds % 60;
    if (remainingSeconds < 10) {
        remainingSeconds = "0" + remainingSeconds; 
    }
    if (minutes < 10) {
        minutes = "0" + minutes; 
    }
     document.getElementById('countdown').innerHTML = "WARNING:SUBMISSIONS MUST BE RECEIVED BEFORE <?php echo date('l,F j,Y h:i a', strtotime($query->Cutoff)); ?><br>"+ minutes + ":" + remainingSeconds + " REMAINING";

    if (minutes >= 15) {

        document.getElementById('countdown').innerHTML = "";
    }
        if (hours > 0) {

        document.getElementById('countdown').innerHTML = "";
    }

    if (seconds == 0) {
         clearInterval(countdownTimer);
        document.getElementById('countdown').innerHTML = "CLOSED";
        window.location='https://example.com/closed/';
    } else {
        seconds--;
    }
}
var countdownTimer = setInterval('timer()', 1000);
</script>