Кто-нибудь знает, почему период времени игнорируется и как я могу также отправить период времени со значениями года, месяца и даты. Любая помощь будет очень признательна.
Время не игнорируется. В функции:
const toIsoString = (year, month, day) =>
moment(new Date(year, month - 1, day)).toISOString(true).split('.')[0];
значения часа, минуты, секунды и миллисекунды опущены, поэтому по умолчанию они равны 0. Какого времени вы ожидаете?
Если вы хотите текущее местное время добавлен к дате, затем создайте дату и установите год, месяц и день на требуемые значения без изменения времени (хотя я не знаю, зачем вам это нужно).
Вместо создавая строку, которую затем необходимо обработать, укажите момент. js желаемый формат:
function toIsoString (year, month, day) {
return moment(new Date().setFullYear(year, month-1, day)).format('YYYY-MM-DD HH:mm:ss');
}
console.log(toIsoString('2021','1','1'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.26.0/moment.min.js"></script>
Вы также можете сделать это без библиотеки, см. Как отформатировать JavaScript дату , например :
function formatDate(year, month, date) {
let z = n => (n<10?'0':'') + Number(n);
return `${year}-${z(month)}-${z(date)} ${
new Date().toLocaleString('en',{
hour12:false,
hour:'2-digit',
minute:'2-digit',
second:'2-digit'})
}`;
}
console.log(formatDate('2021','1','01'))