Return 字符串:'Days' 或 'Months' 或 'Years' 基于天数
Return string: 'Days' or 'Months' or 'Years' based on N of days
我在 vue 3
上使用 moment.js
。
我有一个函数 returns 两个 dates
的差值。这是有效的,但它与我的问题有关。函数是这样写的:
methods: {
getDateDifference (date) {
var date = moment(date, 'YYYY MM DD')
var today = moment()
return today.diff(date, 'days')
}
}
现在,我可以成功地获取从日期 today
传递给函数的 date
的差异。问题是我想检查返回的 days
是否大于一周但小于一个月,以便我可以将其转换为 weeks
而不是显示 28 days
等。如果也可能我想包括如果返回的 days
大于 28 天时应使用 months
而不是周,如果返回的天数大于或等于,则也按 years
呈现它year
总之,不显示
26 days
我需要它来检查它是否可以转换为周,以便我可以将其呈现为:
3 weeks
或者如果我可以在 months
或 year
中渲染它。
您可以使用一个数组,将以天为单位的阈值与结果的粒度相关联。
const periods = [
{threshold: 366, period: "years"},
{threshold: 31, period: "months"},
{threshold: 7, period: "weeks"},
{threshold: 0, period: "days"}
];
days = today.diff(date, "days");
for (let i = 0; i < periods.length; i++) {
if (days >= periods[i].threshold) {
return today.diff(date, periods[i].period);
}
}
moment
可以在持续时间 api:
内解决这个问题
获取毫秒数:
methods: {
getDateDifference (date) {
var date = moment(date, 'YYYY MM DD')
var today = moment()
return today.diff(date)
}
}
然后使用:
/* don't know the object holding methods */
let shortest = moment.duration(obj.methods.getDateDifference(date)).humanize();
如果超过一个月的时间,你会得到几个月而不是几天,几年而不是几个月,等等
我在 vue 3
上使用 moment.js
。
我有一个函数 returns 两个 dates
的差值。这是有效的,但它与我的问题有关。函数是这样写的:
methods: {
getDateDifference (date) {
var date = moment(date, 'YYYY MM DD')
var today = moment()
return today.diff(date, 'days')
}
}
现在,我可以成功地获取从日期 today
传递给函数的 date
的差异。问题是我想检查返回的 days
是否大于一周但小于一个月,以便我可以将其转换为 weeks
而不是显示 28 days
等。如果也可能我想包括如果返回的 days
大于 28 天时应使用 months
而不是周,如果返回的天数大于或等于,则也按 years
呈现它year
总之,不显示
26 days
我需要它来检查它是否可以转换为周,以便我可以将其呈现为:
3 weeks
或者如果我可以在 months
或 year
中渲染它。
您可以使用一个数组,将以天为单位的阈值与结果的粒度相关联。
const periods = [
{threshold: 366, period: "years"},
{threshold: 31, period: "months"},
{threshold: 7, period: "weeks"},
{threshold: 0, period: "days"}
];
days = today.diff(date, "days");
for (let i = 0; i < periods.length; i++) {
if (days >= periods[i].threshold) {
return today.diff(date, periods[i].period);
}
}
moment
可以在持续时间 api:
获取毫秒数:
methods: {
getDateDifference (date) {
var date = moment(date, 'YYYY MM DD')
var today = moment()
return today.diff(date)
}
}
然后使用:
/* don't know the object holding methods */
let shortest = moment.duration(obj.methods.getDateDifference(date)).humanize();
如果超过一个月的时间,你会得到几个月而不是几天,几年而不是几个月,等等