Вычисление возраста по дате рождения в формате YYYYMMDD JS

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы определить полное количество лет человека по его дате рождения, выполните следующие шаги:

  1. Извлеките значения года, месяца и дня из строки даты рождения.
  2. Сравните текущую дату с датой рождения.
  3. Определите количество лет, после чего скорректируйте результат в случае, если текущий год еще не наступил по отношению к дате рождения.

Пример кода:

JS
Скопировать код
function getAgeFromBirthDate(birthDateString) {
  const today = new Date();
  const birthDate = new Date(
    birthDateString.substr(0, 4),
    birthDateString.substr(4, 2) – 1,
    birthDateString.substr(6)
  );

  let age = today.getFullYear() – birthDate.getFullYear();

  if (today.getMonth() < birthDate.getMonth() ||
      (today.getMonth() === birthDate.getMonth() && today.getDate() < birthDate.getDate())) {
    age--;
  }

  return age;
}

console.log(getAgeFromBirthDate("19900301")); // Возраст будет вычислен исходя из текущей даты.
Кинга Идем в IT: пошаговый план для смены профессии

Глубинное понимание кода

Необходимо обратить внимание на високосные годы и часовые пояса:

Високосные годы

Високосные годы увеличивают февраль на одну дату. Объект Date в JavaScript автоматически учитывает это, соответственно все расчеты будут точными, даже если рождение приходится на 29 февраля.

Часовые пояса

Не забывайте учесть часовой пояс пользователя. Воспользовавшись Date.now(), вы сможете сделать так, чтобы ваш код корректно работал в рамках местного времени пользователя.

Преобразование миллисекунд в годы

Функция getTime возвращает время от начала эпохи Unix в миллисекундах. Эти данные можно легко перевести в годы, чтобы получить наглядное представление об возрасте.

Точность и учет граничных случаев

Важно точно вычислять возраст, не забывая о граничных сценариях:

Тонкости расчёта возраста

Для более точного расчёта возраста можно использовать следующий участок кода:

JS
Скопировать код
function calculatePreciseAge(birthDateString) {
  const birthDate = new Date(
    birthDateString.substr(0, 4),
    birthDateString.substr(4, 2) – 1,
    birthDateString.substr(6)
  );

  const difference = Date.now() – birthDate.getTime();
  return Math.abs(new Date(difference).getUTCFullYear() – 1970);
}

Ситуация с датой расчёта, предшествующей дате рождения

Стоит предусмотреть корректную обработку ситуаций, когда дата расчёта окажется раньше дня рождения.

Високосный день рождения

Если день рождения приходится на 29 февраля, убедитесь, что вы корректно учли возраст даже в невисокосные годы.

Смена года

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

Кодирование гибкости

Нужно сделать функцию максимально универсальной, позволив обрабатывать различные форматы даты рождения:

Создание гибкого парсера дат

JS
Скопировать код
function parseBirthDate(birthDateString) {
  // Добавьте здесь логику обработки различных форматов даты.
}

const age = calculateAge(parseBirthDate('1990-03-01')); // Поддержка разных форматов: 'YYYY-MM-DD', 'DD/MM/YYYY' и т.д.

Можно воспользоваться готовыми библиотеками или регулярными выражениями чтобы упростить обработку различных форматов дат.

Использование библиотеки moment.js

Применяйте библиотеки, например, moment.js, для сложных операций с датами:

JS
Скопировать код
function getPreciseAge(birthDateString) {
  const birthDate = moment(birthDateString, 'YYYYMMDD');
  const now = moment();
  return now.diff(birthDate, 'years');
}

Это будет способствовать более простому учету часовых поясов и високосных годов.

Визуализация

Используйте визуализацию в виде временной шкалы, чтобы нагляднее представить процесс вычисления возраста с учетом ключевых этапов Год, Месяц, День:

Markdown
Скопировать код
👶🎂 Дата рождения (ГГГГММДД): [📅📅📅📅][📅📅][📅📅]
Сегодняшняя дата:              [📆📆📆📆][📆📆][📆📆]
JS
Скопировать код
function calculateAge(birthdate) {
    // Ваш возраст — это число полных оборотов вокруг Солнца, которые вы совершили.
}

calculateAge('19940315'); // Это поможет узнать, сколько оборотов вокруг Солнца вы уже совершили.

Полезные материалы

  1. Date – JavaScript | MDN — Базовые принципы работы с объектом Date в JavaScript.
  2. Как получить текущую дату в JavaScript? – Stack Overflow — Здесь вы узнаете, как определить текущую дату.
  3. GitHub Gist: Функция расчёта возраста в JavaScript — Пример функции для вычисления возраста.
  4. Как добавить дни к дате? – Stack Overflow — Советы по работе с датами.
  5. Всё, что вам необходимо знать о датах в JavaScript | CSS-Tricks — Исчерпывающее руководство по работе с датами.