Результат .to()
является относительной временной строкой, и она внутренне округляет значения в любом направлении (таким образом, 29,5 года станут 30 годами). Он предназначен для отображения, например, показа «опубликовано 3 минуты назад» в сообщениях на форуме или в блоге.
Вы ищете метод .diff()
, который вычисляет разницу, но учитывает только полные единицы измерения при условиипо второму аргументу, то есть усечение фактического числа.
const start = moment(birthDate, "YYYY-MM-DD");
age = moment().diff(start, "years");
https://codesandbox.io/s/naughty-lewin-e6vrt