js узнать сколько лет прошло от заданной даты. Появляются лишние 60лет
const date1 = new Date(2000, 12, 4);
console.log(new Date(new Date().getTime() - date1.getTime()).getYear());
Пытаюсь получить сколько лет прошло от заданной даты, до текущего момента. Но почему-то результат выдается на 60 лет больше, чем должно быть.
Ответы (3 шт):
Автор решения: Mikhail Ionkin
→ Ссылка
Этот вопрос эквивалентен вычислению возраста. Ответ есть, например, тут: https://stackoverflow.com/questions/4060004/calculate-age-given-the-birth-date-in-the-format-yyyymmdd
Приведу пример (https://stackoverflow.com/a/7091965/5122436):
function getAge(dateString) {
var today = new Date();
var birthDate = new Date(dateString);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
Автор решения: ksa
→ Ссылка
Можно еще вот так вычислять количество полных лет...
let d1 = new Date(2000, 12, 4);
let d2 = new Date();
d1 = d1.toISOString().split('T')[0].replaceAll('-', '')
d2 = d2.toISOString().split('T')[0].replaceAll('-', '')
const val = Math.trunc((d2 - d1) / 10000)
console.log(val)
Автор решения: Owlly
→ Ссылка
const date1 = new Date(2000, 11, 4);
const today = new Date();
// Разница в годах
let yearsDiff = today.getFullYear() - date1.getFullYear();
// Проверка, если дата еще не прошла в этом году, вычитаем 1 год
const monthDiff = today.getMonth() - date1.getMonth();
const dayDiff = today.getDate() - date1.getDate();
if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) {
yearsDiff--;
}
console.log(yearsDiff);