function dateDiff(startDate, endDate) {
// Преобразование строковых дат в объект Date
const start = new Date(startDate);
const end = new Date(endDate);
// Получаем разницу в миллисекундах
const diffTime = end - start;
// Конвертируем миллисекунды в дни
const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
// Вычисляем количество лет, месяцев и дней
const years = end.getFullYear() - start.getFullYear();
const months = end.getMonth() - start.getMonth();
const days = end.getDate() - start.getDate();
// Корректируем, если разница по месяцам или дням отрицательная
let totalYears = years;
let totalMonths = months;
let totalDays = days;
if (totalDays < 0) {
totalMonths -= 1;
// Получаем количество дней в предыдущем месяце
const lastMonth = new Date(end.getFullYear(), end.getMonth(), 0);
totalDays += lastMonth.getDate();
}
if (totalMonths < 0) {
totalYears -= 1;
totalMonths += 12;
}
return {
years: totalYears,
months: totalMonths,
days: totalDays,
};
}
// Пример использования
const difference = dateDiff("2020-01-15", "2023-03-10");
console.log(`${difference.years} года, ${difference.months} месяца, ${difference.days} дня`);