Moment.js добавьте две недели без изменения часов

#javascript #node.js #date #momentjs

#javascript #node.js #Дата #momentjs

Вопрос:

Итак, моя проблема заключается в следующем: при добавлении 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 на это время, но мне интересно, есть ли более чистый способ, а также почему это вообще происходит.

Комментарии:

1. Ваш формат hh отображения имеет 12-часовой формат. 00 С этим ничего не поделаешь, это вместо 12 AM этого. Если вы хотите 00 , то вам следует использовать 24-часовой формат через HH — capitals .

Ответ №1:

Вам нужно использовать заглавные H буквы (24-часовое время) вместо строчных 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>