Неправильно считает день рождения. т,е если сегодня 26 февраля 2019, а др стоит где-нибудь 10.10.2019., то он показывает 25 лет.
if(userInfo && userInfo.birthDay){
let date = new Date(HexToSignedInt(userInfo.birthDay));
let optionsTime = {
year: 'numeric',
month: '2-digit',
day: '2-digit'
};
birthDay = date.toLocaleString('en-GB', optionsTime).replace(',', ' ');
// years = this.calculateAge(date.getFullYear(), date.getUTCMonth() + 1, date.getUTCDate());
years = this.calculateAge(date.getFullYear(), date.getMonth(), date.getDate());
}
calculateAge(year, month, day) {
let currentDate = new Date();
let currentYear = currentDate.getFullYear();
let currentMonth = currentDate.getMonth();
let currentDay = currentDate.getDate();
// You need to treat the cases where the year, month or day hasn't arrived yet.
let age = currentYear - year;
// if (currentMonth < month) {
if (currentDate < month) {
return age;
} else {
if (currentDay >= day) {
return age;
} else {
age--;
return age;
}
}
}
Логика сравнения должна быть простой:
Пример в числах:
Дата рождения: 2000-02-10
Сегодня 2019-02-09, т.е. за день до:
Сегодня 2019-02-10, т.е. день рождения сегодня
Сегодня 2019-02-11, т.е. день после
Сегодня 2019-01-09, т.е. на месяц раньше
Пример:
function calculateAge(year, month, day) {
let currentDate = new Date();
let currentYear = currentDate.getFullYear();
let currentMonth = currentDate.getMonth();
let currentDay = currentDate.getDate();
console.log(currentYear, currentMonth, currentDay);
console.log(year, month, day);
// You need to treat the cases where the year, month or day hasn't arrived yet.
let age = currentYear - year;
if (currentMonth < month) {
return age - 1;
}
return currentDay < day ? age - 1 : age;
}
console.log(calculateAge(2000, 1, 10));
console.log(calculateAge(2000, 1, 26));
console.log(calculateAge(2000, 1, 27));
console.log(calculateAge(2000, 2, 10));
@Oleksey зачем такие сложности?
const currentDate = new Date()
const birthDate = new Date('1994-10-10');
const MILLISECONDS_IN_YEAR = 31536000000;
const age = Math.floor((currentDate - birthDate ) / MILLISECONDS_IN_YEAR);
console.log(`Возраст: ${age}`);
Не учел високосные годы =(
или используя momentJS
const age = moment().diff(moment('1994-10-10'), 'year')
Виртуальный выделенный сервер (VDS) становится отличным выбором
как сделать задержку на переход к следующему элементу и событие submit? есть формы у товара с разными размерами
подскажите как обработать ввод в инпуты и чтобы ползунок менял значение