Moment.js возврат неправильной даты (на один год вперед)

#node.js #date #momentjs

#node.js #Дата #момент.

Вопрос:

Я проводил несколько тестов и столкнулся с проблемой Moment.js

Дата в моей базе данных есть 2001-06-06T00:00:00.000 00:00 .

Я использовал Age: moment(user.dateOfBirth).toNow(true) и получил "Age": "21 years" , когда это явно должно было быть 20 .

dateOfBirth Правильность указана в качестве Даты на моей схеме. Я заполнил его как 2001-06-06 .

Я также попробовал использовать .diff и получил случайное число. Проблема в форматировании даты?

Спасибо.

Ответ №1:

тоНов дает приблизительное значение, оно округляется. Что вы можете использовать, так это продолжительность.

 const dateOfBirth = "2001-06-06"; const age1 = moment("2001-06-06", "yyyy-mm-dd").toNow(true);  const age2 = moment.duration(moment().diff(moment(dateOfBirth)))._data["years"];  console.log(age1); console.log(age2); 
 lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"gt;lt;/scriptgt; 

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

1. Все еще говорится, что 21 год в Firefox и то же самое в Chrome — где вы видите, как это работает?

2. Я допустил какую-то ошибку, обновил свой ответ.