Javascript 时刻JS:倒计时未计算正确的差值并使其倒计时

Javascript 时刻JS:倒计时未计算正确的差值并使其倒计时,javascript,html,jquery,momentjs,Javascript,Html,Jquery,Momentjs,我正在尝试实现一个简单的事件倒计时功能,它将显示事件的天、小时、分钟和秒 为此,我试图利用moment.js 目前,在写这篇文章时,时间是2020年8月6日20:43。活动于2020年9月7日13:00开始 我试图计算当前时间与事件开始日期和时间之间的日期和时间差(您知道它是如何工作的) 然而,根据我目前的方法,日期差异表明现在和9月7日之间有28天的差异,这是不正确的,应该是32天 此外,正如您将从下面的标记中看到的,我的数字(天、小时、分钟和秒)被划分为单独的div元素。我已经看到哪个显示了

我正在尝试实现一个简单的事件倒计时功能,它将显示事件的
小时
分钟

为此,我试图利用
moment.js

目前,在写这篇文章时,时间是2020年8月6日20:43。活动于2020年9月7日13:00开始

我试图计算当前时间与事件开始日期和时间之间的日期和时间差(您知道它是如何工作的)

然而,根据我目前的方法,日期差异表明现在和9月7日之间有28天的差异,这是不正确的,应该是32天

此外,正如您将从下面的标记中看到的,我的数字(天、小时、分钟和秒)被划分为单独的
div
元素。我已经看到哪个显示了倒计时功能

但是,上面的示例使用单个div(
.countdown
)。当它们在不同的div中时,是否仍然可以使用倒计时功能?如果是,怎么做

我当前的方法:

$(函数(){
var eventTime=1599483600000;//2020年9月7日13:00:00 GMT+0000的时间戳
var currentTime=新日期();
var diffTime=事件时间-当前时间;
var duration=时刻持续时间(diffTime*1000,'毫秒');
var区间=1000;
持续时间=时刻。持续时间(持续时间-间隔,'毫秒');
var days=duration.days();
var hours=duration.hours();
var minutes=duration.minutes();
var seconds=duration.seconds();
日志(“天:+Days+”,小时:+Hours+,分钟:+Minutes+”。秒:+Seconds);
var days_div=document.querySelector(“#倒计时__daysspan”);
var hours_div=document.querySelector(“#倒计时_小时跨度”);
var minutes_div=document.querySelector(“#倒计时__minutesspan”);
var seconds_div=document.querySelector(“#倒计时_秒跨度”);
天\u div.innerHTML=天\u div.innerHTML+天;
hours\u div.innerHTML=hours\u div.innerHTML+hours;
分钟数\u div.innerHTML=分钟数\u div.innerHTML+分钟数;
seconds\u div.innerHTML=seconds\u div.innerHTML+秒;
});
。倒计时{
显示器:flex;
}
.倒计时.倒计时项目{
填充:0px 20px;
右边框:2倍纯蓝;
文本对齐:居中;
对齐项目:居中;
}

日子

小时数

会议记录

从文档开始:

在计算两个时刻之间的天数或年份时,使用矩差比使用持续时间要好得多

如果没有额外的数学运算,我也无法计算出如何这样做,因为提供给
diff()
的第二个参数给出了该单元的全部差异。您可以将差异传递给duration(per),然后使用附加的依赖项格式化duration,而无需进行计算

$(函数(){
函数setTime(){
var eventTime=新时刻(1599483600000);//2020年9月7日13:00:00 GMT+0000的时间戳
var currentTime=新力矩();
var diff=eventTime.diff(当前时间);
var days=eventTime.diff(当前时间,“天”);
var小时=eventTime.diff(当前时间,“小时”)-天*24;
var分钟数=
eventTime.diff(当前时间,“分钟”)-天*24*60-小时*60;
var秒=
eventTime.diff(当前时间,“秒”)-
天数*24*60*60-
小时*60*60-
分钟*60;
var days_div=document.querySelector(“倒计时天数跨度”);
var hours_div=document.querySelector(“倒计时”小时跨度);
var minutes_div=document.querySelector(“倒计时分钟跨度”);
var seconds_div=document.querySelector(“倒计时秒跨度”);
days_div.innerHTML=天;
hours\u div.innerHTML=小时;
minutes\u div.innerHTML=分钟;
seconds\u div.innerHTML=秒;
}
设置时间();
设置间隔(设置时间,1000);
});
。倒计时{
显示器:flex;
}
.倒计时.倒计时项目{
填充:0px 20px;
右边框:2倍纯蓝;
文本对齐:居中;
对齐项目:居中;
}

日子

小时数

会议记录


这绝对是可能的。您需要使用setInterval()函数。在该函数中,您将获得currentTime变量,并每秒计算差值,并更新DOM元素


如果你看一下你分享的例子,所有的计算都是针对计时器的,都是在一个setInterval函数中。

ah,我看到它对你有效,我得到的错误是
eventTime.diff不是我这边的函数。从我所看到的
diff
只能用于
moment
对象?我的坏,忘了您更改为
var eventTime=new moment(1599483600000)-现在适合我了,非常感谢!