Javascript 在React应用程序中尝试比较两个日期是否匹配的噩梦
正如标题所说,我正在努力让这件事正常运作。我已经看过这里的类似帖子和许多参考MomentJ,他们建议现在不要在自己的网站上使用它Javascript 在React应用程序中尝试比较两个日期是否匹配的噩梦,javascript,date,Javascript,Date,正如标题所说,我正在努力让这件事正常运作。我已经看过这里的类似帖子和许多参考MomentJ,他们建议现在不要在自己的网站上使用它 const today = new Date().toLocaleDateString('en-gb') return loading ? <Spinner /> : <Fragment> <div className="calendar_events"> <p classNa
const today = new Date().toLocaleDateString('en-gb')
return loading ? <Spinner /> :
<Fragment>
<div className="calendar_events">
<p className="ce_title">Upcoming Events</p>
{
appointments.map(appointment => {
let date = new Date(appointment.date).toLocaleDateString('en-gb')
{console.log('date', typeof date)}
{console.log('today', typeof today)}
if(today == date) {
<Appointment key={appointment._id} appointment={appointment} date={date}/>
}
})
}
</div>
</div>
</Fragment>
每个变量的控制台输出
date 29/11/20 Calendar.js:39
today 29/11/20 Calendar.js:40 *2 as there are two demo appointments on this date.
我还尝试了=和==操作符,但没有使用nada
请派人来帮忙,我精神错乱了
编辑
我想是在@Uzair Ashraf的帮助下,我成功地让它工作了
它甚至可以更简洁地处理以下代码
{
appointments.map(appointment => {
let date = new Date(appointment.date).toLocaleDateString('en-gb')
if(today === date) {
return <Appointment key={appointment._id} appointment={appointment} />
}
})
}
{
appointment.map(约会=>{
let date=新日期(约会日期)。toLocaleDateString('en-gb'))
如果(今天===日期){
返回
}
})
}
您缺少返回语句。
尽管如果没有回退,它将创建一个包含React元素和未定义元素的数组
我建议先过滤数组,然后映射
编辑:您似乎还有一个额外的结束div标记。你也不需要碎片
Edit2:您可以像这样拆分日期:
let date = "2020-11-29T00:00:00.000Z"
date = date.split('T')[0]
const today=new Date().toLocaleDateString('en-gb'))
返回装载?:
即将到来的活动
{
约会
.filter(约会=>新日期(约会.Date).toLocaleDateString('en-gb')==今天)
.map(约会=>{
返回
}
})
}
您没有返回两次吗???@AdamSackfield您可以拆分它当然@AdamSackfield高阶函数,如map、filter、find、some、every等,将回调函数作为参数。基本上是对数组中的每个值调用回调函数。因此,当您调用map时,您正在映射这些值,对这些值执行一些操作,并返回它们以存储在新数组中。通常您看不到显式return语句,因为单行箭头函数具有隐式返回,如本例中的filter方法调用。但是,当使用大括号时,必须显式返回新值,如reactcompone@UzairAshraf完美的我爱你,伙计。我只在这上面浪费了7个小时,嘿,这是7个小时没有沮丧。Thanks@UzairAshraf-这就是为什么我喜欢web开发社区,如果你至少自己花时间尝试一切,每个人都愿意提供帮助。我不喜欢在这个领域,但我的React游戏不如我的API建筑那么强大。如果你只想比较日期,那么toDateString可能是一个更好的比较。如果类型相同(在本例中为字符串),则使用==
或===
没有区别。:-)
let date = "2020-11-29T00:00:00.000Z"
date = date.split('T')[0]
const today = new Date().toLocaleDateString('en-gb')
return loading ? <Spinner /> :
<div className="calendar_events">
<p className="ce_title">Upcoming Events</p>
{
appointments
.filter(appointment => new Date(appointment.date).toLocaleDateString('en-gb') === today)
.map(appointment => {
return <Appointment key={appointment._id} appointment={appointment} date={new Date(appointment.date).toLocaleDateString('en-gb')}/>
}
})
}
</div>