Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React应用程序中尝试比较两个日期是否匹配的噩梦_Javascript_Date - Fatal编程技术网

Javascript 在React应用程序中尝试比较两个日期是否匹配的噩梦

Javascript 在React应用程序中尝试比较两个日期是否匹配的噩梦,javascript,date,Javascript,Date,正如标题所说,我正在努力让这件事正常运作。我已经看过这里的类似帖子和许多参考MomentJ,他们建议现在不要在自己的网站上使用它 const today = new Date().toLocaleDateString('en-gb') return loading ? <Spinner /> : <Fragment> <div className="calendar_events"> <p classNa

正如标题所说,我正在努力让这件事正常运作。我已经看过这里的类似帖子和许多参考MomentJ,他们建议现在不要在自己的网站上使用它

 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>