Javascript 使用momentjs将天转换为两个日期的小时、分钟和秒

Javascript 使用momentjs将天转换为两个日期的小时、分钟和秒,javascript,reactjs,momentjs,Javascript,Reactjs,Momentjs,如何使用momentjs将天转换为小时、分钟和秒?我认为我的计算是错误的,因为我得到的是今天的日期和API中有5天的日期的差值 到目前为止,这是我的代码 const countdown = () => { let dueDate = '2019-12-04 12:50:42 AM'; //getting this value from the API let eventTime = moment(dateDue).unix(); let currentTime = momen

如何使用momentjs将天转换为小时、分钟和秒?我认为我的计算是错误的,因为我得到的是今天的日期和API中有5天的日期的差值

到目前为止,这是我的代码

const countdown = () => {
  let dueDate = '2019-12-04 12:50:42 AM'; //getting this value from the API

  let eventTime = moment(dateDue).unix();
  let currentTime = moment(new Date()).unix();
  let diffTime = eventTime - currentTime;

   const interval = 1000;
   let duration = moment.duration(diffTime * interval, 'milliseconds');
   duration = moment.duration(duration - interval, 'milliseconds');

   countDowntimer[dateDue] = setInterval(() => {
     setMinutes(duration.minutes());
     setSeconds(duration.seconds());
   }, interval);

   return `${duration.hours()}hr ${duration.minutes()}m ${duration.seconds()}s`;

 };

 const timer = countdown(minutes, seconds);

 return timer;

首先,在制作倒计时计时器时,不要从最终日期中减去,而是在每次迭代时计算差值。 然后,对于计算每个持续时间,您需要将持续时间的整数部分作为值,然后使用小数部分计算下一个间隔乘以X(其中X是秒表示分钟,分钟表示小时,依此类推)

const time=document.getElementById(“时间”);
常量倒计时=()=>{
让dueDate='2019-12-04 12:50:42 AM';//从API获取此值
设eventTime=时刻(dueDate,'yyyyy-MM-DD HH:MM:ss a');
常数间隔=1000;
设置间隔(()=>{
const hours=moment.duration(eventTime-moment()).asHours();
常量提示=数学楼层(小时);
const minutes=moment.duration(60*(小时-提示),“分钟”).asMinutes();
const mInt=数学楼层(分钟);
const seconds=时刻.持续时间(60*(分钟-分钟),“秒”).asSeconds();
常数sInt=数学楼层(秒);
time.innerHTML=`${hInt}hr${mInt}m${sInt}s`;
//在此处设置反应状态
},间隔);
};
倒计时()

使用

const倒计时=()=>{
让dueDate='2019-12-04 12:50:42 AM';
让结束=力矩(dueDate,'YYYY-MM-DD hh:MM:ss A');
让我们开始=力矩();
常数间隔=1000;
设置间隔(()=>{
开始=力矩()
设diff=end.diff(开始)
document.body.innerHTML=力矩.持续时间(差异).format(“HH[hr]mm[m]ss]”;
},间隔);
}
倒计时()

您是否比较了此处的当前时间?或者获得差异?矩()为您提供当前时间,因此eventTime-矩()为您提供差异