gpt4 book ai didi

javascript - 使用momentJS计算年龄并得到不同的输出字符串

转载 作者:行者123 更新时间:2023-11-29 23:16:18 25 4
gpt4 key购买 nike

这就是我通过时刻计算一个人的年龄的方式:

const age = moment().diff('1980-01-01', 'years', false)

但由于我还需要获取 child 和婴儿的当前年龄,因此我需要获取如下四个示例的输出:

30 years          // adults
1 year 2 months // for all <18 years
2 months 12 days // for all <1 year and > 1 month
20 days // for all <1 month

我如何计算这些输出?

最佳答案

这是一个可以为您完成此操作的函数:

const pluralize = (str, n) => n > 1 ? `${n} ${str.concat('s')}` : n == 0 ? '' :`${n} ${str}`

const calcAge = (dob) => {
const age = moment.duration(moment().diff(moment(dob)))
const ageInYears = Math.floor(age.asYears())
const ageInMonths = Math.floor(age.asMonths())
const ageInDays = Math.floor(age.asDays())

if (age < 0)
throw 'DOB is in the future!'

let pluralYears = pluralize('year', ageInYears)
let pluralDays = pluralize('day', age.days())

if (ageInYears < 18) {
if (ageInYears >= 1) {
return `${pluralYears} ${pluralize('month', age.months())}`
} else if (ageInYears < 1 && ageInMonths >= 1) {
return `${pluralize('month', ageInMonths)} ${pluralDays}`
} else {
return pluralDays
}
} else {
return pluralYears
}

}

console.log(calcAge('2000-01-01')) // 18 Years
console.log(calcAge('2011-05-01')) // 7 years 5 months
console.log(calcAge('2015-10-01')) // 3 years
console.log(calcAge('2017-05-01')) // 1 year 5 months
console.log(calcAge('2018-09-01')) // 1 month 5 days
console.log(calcAge('2018-10-01')) // 6 days
console.log(calcAge('2018-07-07')) // 3 months
console.log(calcAge('2099-12-01')) // Uncaught DOB is in the future!
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

它依赖于时刻,主要是它使用 moment.diffmoment.duration .从那时起,它只是以正确的 form(意思是年/月/日)获取该持续时间的正确部分。

我没有做过广泛的测试,所以请随意四处看看它是否不能 100% 处理某些情况。

关于javascript - 使用momentJS计算年龄并得到不同的输出字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52678602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com