Javascript 从出生日期计算年龄用户在react中的输入值
我正在尝试获取用户输入的出生日期值,并将其转换为等效年龄 在控制台中,显示获取的值,但未将其分配给状态变量Javascript 从出生日期计算年龄用户在react中的输入值,javascript,html,reactjs,Javascript,Html,Reactjs,我正在尝试获取用户输入的出生日期值,并将其转换为等效年龄 在控制台中,显示获取的值,但未将其分配给状态变量dob1,执行年龄计算函数 stackblitz及其链接中提供了完整的代码: HTML 超过一定年龄的男性人数: JS handleChange\u年龄=(事件)=>{ log(“DOB:,event.target.value”); this.setState({dob1:event.target.value}) console.log(this.state.dob1); var age\
dob1
,执行年龄计算函数
stackblitz及其链接中提供了完整的代码:
HTML
超过一定年龄的男性人数:
JS
handleChange\u年龄=(事件)=>{
log(“DOB:,event.target.value”);
this.setState({dob1:event.target.value})
console.log(this.state.dob1);
var age\u latest={age\u latest:this.calculate\u age}
控制台日志(最新版本);
this.setState({age1:age_latest})
log(“年龄:”,this.state.age1);
}
计算年龄=(dob1)=>{
var today=新日期();
var birthDate=新日期(this.state.dob1);
var age_now=today.getFullYear()-birthDate.getFullYear();
var m=today.getMonth()-birthDate.getMonth();
如果(m<0 | |(m==0&&today.getDate()
首先,setState
本质上是异步的。因此,如果您想让新设置的状态
的值执行某些操作,请使用
其次,calculate\u age
接受一个dob
参数。您可以直接在handleChange\u age
函数中使用它
这是修改后的代码
您的calculate\u age
函数使用dob1
参数而不是this.state.dob1
:
calculate_age = (dob1) => {
var today = new Date();
var birthDate = new Date(dob1); // create a date object directly from `dob1` argument
var age_now = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate()))
{
age_now--;
}
console.log(age_now);
return age_now;
}
另一个
calculate\u age
由于某种原因,mehamasum的函数不适用于我
const calculate_age = dob => {
const birthDate = new Date(dob);
const difference = Date.now() - birthDate.getTime();
const age = new Date(difference);
return Math.abs(age.getUTCFullYear() - 1970);
}
非常感谢您的帮助…代码正在运行…您还可以为其他问题提供您的建议,在下面给出的链接中:当然,我会研究它:)如果这个解决方案对您有效,请。嘿,我接受了…您能帮我解决其他问题吗?我建议您使用momentJS。它完全适合你的场景。
calculate_age = (dob1) => {
var today = new Date();
var birthDate = new Date(dob1); // create a date object directly from `dob1` argument
var age_now = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate()))
{
age_now--;
}
console.log(age_now);
return age_now;
}
handleChange_age = (event) => {
console.log("DOB:", event.target.value);
this.setState({ dob1: event.target.value }, () => {
// example of setState callback
// this will have the latest this.state.dob1
console.log(this.state.dob1);
})
// call calculate_age with event.target.value
var age_latest = {age_latest: this.calculate_age(event.target.value)}
console.log(age_latest);
this.setState({ age1: age_latest }, () => {
// this will have the latest this.state.age1
console.log("Age:", this.state.age1);
})
}
const calculate_age = dob => {
const birthDate = new Date(dob);
const difference = Date.now() - birthDate.getTime();
const age = new Date(difference);
return Math.abs(age.getUTCFullYear() - 1970);
}