reactjs 如何在Moment.js中启用/验证日期输入仅从当前日期到50年前?

ekqde3dh  于 2022-11-22  发布在  React
关注(0)|答案(4)|浏览(160)

我正在使用moment.js,我想限制用户儿子只能选择从当前日期到50年前的一个日期。总之,我只是希望用户的出生日期不能超过50年。所以,从当前日期开始,只有50年前的范围才应该存在。我怎么做呢?请指导我。

hof1towb

hof1towb1#

所以你得先计算50年的回溯日期https://momentjs.com/docs/#/manipulating/subtract/

fiftyYearsBackDate = moment().subtract(50, "years")

获取用户选定日期

userDate = new Date()

从该对象创建时刻对象并查询https://momentjs.com/docs/#/query/is-after/

moment(userDate).isAfter(fiftyYearsBackDate)

这将返回boolean,您可以使用它来显示错误消息。

dced5bon

dced5bon2#

你要计算从现在到生日的difference,并检查它是否大于50。

const birthDate = '1970-01-01'
const yearsDiff = moment().diff(birthDate, 'years');

如果要以十进制得到年数的差值:

const yearsDiff = moment().diff(birthDate, 'years', true);

yearsDiff将包含差值,因此您可以对它执行if检查,以查看它是否大于50。
官方文档:https://momentjs.com/docs/#/displaying/difference/

polkgigr

polkgigr3#

通过使用moment js,你可以很容易地得到过去和未来的日期,就像这样-

const past = moment().subtract(50, 'years'); // To past
const future = moment().add(50, 'years'); // Back to future

终于

const today = moment();
moment(today).isAfter(past, 'year'); // return: true || false

引用站点URL为-https://everyday.codes/javascript/how-to-format-date-in-javascript-with-moment-js/

bqjvbblv

bqjvbblv4#

如果没有moment.js,您可以测试出生日期是否小于今天减去50年:

birthdate < new Date().setFullYear(new Date().getFullYear() - 50);

使用示例:

let testDates = [
  new Date(1970,0,1), // 1 Jan 1970
  new Date(2000,0,1)  // 1 Jan 2000
].forEach(date => console.log(
  `More than 50 years ago?\n` +
  `${date.toDateString()}: ${date < new Date().setFullYear(new Date().getFullYear() - 50)}`
));

唯一需要检查的行为是2月29日左右。一些地方在非闰年将生日改为2月28日,其他地方则改为3月1日。

相关问题