Javascript MomentJS diff增加了一个小时

Javascript MomentJS diff增加了一个小时,javascript,momentjs,moment-timezone,Javascript,Momentjs,Moment Timezone,我正在这样做 const currentcetime=moment.tz('2020-03-18 15:58:38','Europe/Madrid'); const limitcetime=moment.tz('2020-03-18 18:00:00','Europe/Madrid'); log('current',currentCETTime.format('HH:mm:ss'); log('limit',limitceTime.format('HH:mm:ss'); 常数秒=数学绝对值(L

我正在这样做

const currentcetime=moment.tz('2020-03-18 15:58:38','Europe/Madrid');
const limitcetime=moment.tz('2020-03-18 18:00:00','Europe/Madrid');
log('current',currentCETTime.format('HH:mm:ss');
log('limit',limitceTime.format('HH:mm:ss');
常数秒=数学绝对值(LimitceTime.diff(CurrentceTime)/1000);
console.log('小时',(秒/60)/60);
常数rem=力矩(秒*1000);
console.log('diff',moment(rem).tz('Europe/Madrid')。格式('HH:mm')

如果您打印出
rem的整个日期,您将看到问题:

const currentcetime=moment.tz('2020-03-18 15:58:38','Europe/Madrid');
const limitcetime=moment.tz('2020-03-18 18:00:00','Europe/Madrid');
log('current',currentCETTime.format('HH:mm:ss');
log('limit',limitceTime.format('HH:mm:ss');
常数秒=数学绝对值(LimitceTime.diff(CurrentceTime)/1000);
console.log('小时',(秒/60)/60);
常数rem=力矩(秒*1000);
console.log('diff',moment(rem).tz('Europe/Madrid').toString())

时刻(毫秒)
,以及tz变量,将毫秒添加到日期
1970-01-01:00:00
。这是此方法的行为。这就是为什么格式化后,它会返回一个额外的小时,但这是因为它从1小时开始,而不是0小时。您可以通过传入总毫秒数
0
来检查此行为,您将看到它返回小时值1

如果您只需要小时和秒,则无需使用时区。您可以调用utc,然后格式化。检查下面的代码

const currentcetime=moment.tz('2020-03-18 15:58:38','Europe/Madrid');
const limitcetime=moment.tz('2020-03-18 18:00:00','Europe/Madrid');
log('current',currentCETTime.format('HH:mm:ss');
log('limit',limitceTime.format('HH:mm:ss');
常数秒=数学绝对值(LimitceTime.diff(CurrentceTime)/1000);
console.log('小时',(秒/60)/60);
常数rem=力矩(秒*1000);
console.log('diff',moment(rem).utc()格式('HH:mm')


我将您的代码转换为您可以在问题中执行的代码块。我还删除了您使用
momentTZ
所做的任何别名,因为它没有定义。如果更改没有产生您预期的结果,请根据需要对其进行进一步编辑,但请尽量保留它,使其成为您可以执行的代码snippit。谢谢Igor,我不知道如何执行。。。