使用javascript记录倒计时的日期和时间

使用javascript记录倒计时的日期和时间,javascript,Javascript,我正在尝试下面的代码倒计时到准确的日期和时间。我的意思是,我想做一个宫缩网站倒计时日期(包括确切时间)。但日期不是倒计时。js代码只是显示了错误的计数,并没有记录秒、分、时、日。这个js代码有问题,但我不明白,问题到底出在哪里 以下是代码: (function init() { function getTimeRemaining(endtime) { var t = Date.parse(endtime) - Date.parse(new Date("03/13/2018 9:30

我正在尝试下面的代码倒计时到准确的日期和时间。我的意思是,我想做一个宫缩网站倒计时日期(包括确切时间)。但日期不是倒计时。js代码只是显示了错误的计数,并没有记录秒、分、时、日。这个js代码有问题,但我不明白,问题到底出在哪里

以下是代码:

(function init() {
  function getTimeRemaining(endtime) {
    var t = Date.parse(endtime) - Date.parse(new Date("03/13/2018 9:30 AM"));
    var seconds = Math.floor((t / 1000) % 60);
    var minutes = Math.floor((t / 1000 / 60) % 60);
    var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
    var days = Math.floor(t / (1000 * 60 * 60 * 24));
    return {
      'total': t,
      'days': days,
      'hours': hours,
      'minutes': minutes,
      'seconds': seconds
    };
  }

  function initializeClock(endtime){
  var timeinterval = setInterval(function(){
    var t = getTimeRemaining(endtime);
    document.querySelector(".days > .value").innerText=t.days;
    document.querySelector(".hours > .value").innerText=t.hours;
    document.querySelector(".minutes > .value").innerText=t.minutes;
    document.querySelector(".seconds > .value").innerText=t.seconds;
    if(t.total<=0){
      clearInterval(timeinterval);
    }
  },1000);
}
initializeClock(((new Date()).getFullYear()+1) + "/1/1")
})();
(函数init(){
函数getTimeRemaining(endtime){
var t=Date.parse(endtime)-Date.parse(新日期(“2018年3月13日上午9:30”);
var秒=数学地板((t/1000)%60);
var分钟=数学地板((t/1000/60)%60);
可变小时数=数学楼层((t/(1000*60*60))%24);
风险天数=数学下限(t/(1000*60*60*24));
返回{
“总计”:t,
“天”:天,
“小时”:小时,
“分钟”:分钟,
“秒”:秒
};
}
函数初始化锁(结束时间){
var timeinterval=setInterval(函数(){
var t=GetTime剩余时间(endtime);
document.querySelector(“.days>.value”).innerText=t.days;
document.querySelector(“.hours>.value”).innerText=t.hours;
document.querySelector(“.minutes>.value”).innerText=t.minutes;
document.querySelector(“.seconds>.value”).innerText=t.seconds;

如果(t.total我对你的代码做了一些修改

我添加了一个处理时间显示的
displayTime()
函数

initializelock()
现在在调用时直接调用
displayTime()
,无需等待一秒钟

getTimeRemaining()
现在通过考虑当前日期而不是随机日期来计算正确的时间:
var t=date.parse(endtime)-date.parse(new date());

函数显示时间(日期){
var t=GetTimeResisting(日期);
document.querySelector(“.days>.value”).innerText=t.days;
document.querySelector(“.hours>.value”).innerText=t.hours;
document.querySelector(“.minutes>.value”).innerText=t.minutes;
document.querySelector(“.seconds>.value”).innerText=t.seconds;
返回t;
}
函数getTimeRemaining(endtime){
var t=Date.parse(endtime)-Date.parse(new Date());
var秒=数学地板((t/1000)%60);
var分钟=数学地板((t/1000/60)%60);
可变小时数=数学楼层((t/(1000*60*60))%24);
风险天数=数学下限(t/(1000*60*60*24));
返回{
“总计”:t,
“天”:天,
“小时”:小时,
“分钟”:分钟,
“秒”:秒
};
}
函数初始化锁(结束时间){
显示时间(结束时间);
var timeinterval=setInterval(函数(){
t=显示时间(结束时间);

如果(t.total我认为你把这个问题弄得太复杂了。如果你只是从一个日期开始,然后每隔一秒钟,从开始日期减去一秒钟,你就完成了

var out=document.getElementById(“输出”);
var start=新日期();
setInterval(函数(){
开始=新日期(start.getTime()-1000);
out.textContent=
start.getHours()+“Hours”+“start.getMinutes()+“Minutes”+“start.getSeconds()+“Seconds”;
},1000);
从当前时间开始倒计时

为什么要硬编码开始日期,开始日期应该是当前日期时间o,我必须这样写代码:
var end=new Date(“这是我使用空格的日期和时间”)
可以。谢谢。但是我想设置日期。例如:
2018年12月3日-2018年13月3日
@Jemspoole您想设置日期是什么意思?为了进行倒计时,您必须考虑当前日期。当前日期到倒计时完成日期。倒计时将在我选择的日期后完成date@Jemspoole那已经是什么了
initializelock(((new Date()).getFullYear()+1)+“/1/1”)发生了错误
,只需将其更改为您想要的内容即可。@Jemspoole
initializelock(“2018/03/13 09:30”)
请注意,日期确实应该使用ISO格式初始化,…
yyy/MM/DD
不完全是@Keith。
setTimeout
setInterval
不能完全依赖于按指定的时间间隔/计时器触发,但当代码运行时,它将始终获取当前时间并从该时间开始工作。因此,时间不会被占用g、 但是它被更新的频率不能保证是精确的每一秒。这样做会更好,但这并不是问题的真正含义。嗨,Scott,setInterval可能会漂移并错过回调。你的代码每次减去1秒,如果你每次都改为计算出差值就可以了。