Javascript momentjs日期差返回错误

Javascript momentjs日期差返回错误,javascript,momentjs,Javascript,Momentjs,我使用countdown.js并希望将60天添加到日期(数据取自数据库)。我在targetDay中这样做了,它运行良好,现在我想从现在开始计算这个日期,但它返回一个奇怪的日期“1969-11-05T21:24:07.416Z”为什么 const nowDate=moment(); const targetDay=时刻('2020-10-2414:25:26')。添加('60','days'); 常数倒数=时刻(nowDate-targetDay); 控制台日志(倒计时); //const di

我使用
countdown.js
并希望将
60天
添加到
日期
(数据取自数据库)。我在targetDay中这样做了,它运行良好,现在我想从现在开始计算这个日期,但它返回一个奇怪的日期“1969-11-05T21:24:07.416Z”为什么

const nowDate=moment();
const targetDay=时刻('2020-10-2414:25:26')。添加('60','days');
常数倒数=时刻(nowDate-targetDay);
控制台日志(倒计时);
//const diff=targetDay.fromNow();
const count_days=countdown.format('D');
const count_hours=countdown.format('HH');
const count_minutes=countdown.format('mm');
const count_seconds=countdown.format('ss');
log(count_days+'days:'+count_hours+'hrs:'+count_minutes+'m:'+count_seconds+'s')

使用方向数学减法代替方向数学减法

这将创建一个
时刻。持续时间
(默认情况下以毫秒为单位)

const nowDate=moment();
const targetDay=时刻('2020-10-2414:25:26')。添加('60','days');
常量倒计时diff=targetDay.diff(nowDate)
// 4855463420
您的差异常数也应该在持续时间中测量,因为添加差异的格式不是持续时间

例如10月28日+60天=>12月28日。但是
moment('28-12-2020')。格式('D')
是要显示的
60
28
isntead

因此,您还需要将它们作为差异单独存储

const count_days=targetDay.diff(nowDate,'d');
const count_hours=targetDay.diff(nowDate,'h');
const count_minutes=targetDay.diff(nowDate,'m');
const count_seconds=targetDay.diff(nowDate,'s');
如果你想把它转换回某个时刻,你可以把这个差加到原来的那个。这只是说明如何计算差异

const countdown=nowDate.add(countdownDiff,'ms')
//显然,这是多余的,因为它与targetDay相同
下面是一个工作示例:

const nowDate=moment();
const targetDay=时刻('2020-10-2414:25:26')。添加('60','days');
常量倒计时diff=targetDay.diff(nowDate)
// 4855463420
const countdown=时刻(nowDate)。添加(countdownDiff,'ms')
//显然,这是多余的,因为它与targetDay相同
const count_days=targetDay.diff(nowDate,“days”);
const count_hours=targetDay.diff(nowDate,'h');
const count_minutes=targetDay.diff(nowDate,'m');
const count_seconds=targetDay.diff(nowDate,'s');
console.log('Current day:',nowDate.format('Do MMM yyy HH:mm');
console.log('Target day:',targetDay.format('Do MMM yyy HH:mm');
console.log('Countdown end date',Countdown.format('Do-MMM-YYYY-HH:mm');
log(count_days+'days:'+count_hours+'hrs:'+count_minutes+'m:'+count_seconds+'s')

您可以使用
.duration()
然后使用
.hours()
.minutes()
.seconds()
获取剩余时间,这些函数从
毫秒转换而来

setInterval(函数(){//删除
const nowDate=力矩();
const targetDay=moment('2030-10-2414:25:26')。添加('60','days');//我改为2030以使这个片段在未来继续存在;)
常数倒数=时刻持续时间(targetDay.diff(nowDate));
const count_days=Math.floor(countdown.asDays());
const count_hours=倒计时.hours();
const count_minutes=倒计时.minutes();
const count_seconds=倒计时。秒();
$('div').text(count_days+'days:'+count_hours+'hrs:'+count_minutes+'m:'+count_seconds+'s');
}, 1000); // 删除


nowDate-targetDay
总计为
-4855971015
。将该时间传递给moment可以追溯到1970年1月1日起的56天
moment()
表示日期<代码>时刻。持续时间()
表示持续时间。您需要调整获取和使用倒计时的方式<代码>常数倒数=时刻持续时间(nowDate.diff(targetDay))@Ourobrus你试过这个吗?不为我工作!当然,您需要做进一步的调整,因为像
.format()
这样的东西对持续时间不可用。阅读可能会有所帮助。考虑到我的第一条评论正好回答了你提出的问题,这一切都很有趣:
它返回了一个奇怪的日期“1969-11-05T21:24:07.416Z”为什么?
无论如何,我不关心rep,我也不是来这里排挤新手的。无论如何,你都不是一个新手,你最早的JS问题是大约三年前提出的。@ChrisG我对这个问题/答案有点犹豫。虽然我自己也很鄙视帮助吸血鬼,但我很难判断OP是真的不理解持续时间和日期之间的区别,还是真的只是想找个人为他们工作。就我个人而言,我不介意删除评论中显示的行为,但同时我觉得,对于其他用户群来说,答案实际上可能很有用,他们在实际访问问题几天后也会查看答案。也许值得特别针对用户打开case@meta?我已经删除了我的评论;我同意这个答案可能对其他人有用。在我看来,这是不值得进一步努力的。根据我的经验,最好坚持投反对票和接近票。