Moment.js 增加两周而不改变时间

Moment.js add two weeks without changing hours

所以我的问题是:当增加 2 周时,moment 会因为某种原因增加小时数,而不是仅仅增加周数,我如何只更改日期,同时保持时间不变?

var firstDate = "2020-11-02;00:00:00";
var secondDate = moment(firstDate, 'YYYY-MM-DD;hh:mm:ss').add('2', 'weeks');

console.log(secondDate.format('YYYY-MM-DD;hh:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

输出:2020-11-16;12:00:00

想要的输出:2020-11-16;00:00:00

我知道我可以从 firstDate 中提取时间,然后将 secondDate 的时间更改为那个时间,但我想知道是否有更简洁的方法以及为什么会发生这种情况.

您需要使用大写 H(24 小时制)而不是 lower-case h(12 小时制)。

var firstDate = "2020-11-02;00:00:00";
var secondDate = moment(firstDate, 'YYYY-MM-DD;HH:mm:ss').add('2', 'weeks');

// output: 2020-11-16;12:00:00
console.log(secondDate.format('YYYY-MM-DD;HH:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>