【问题标题】:React compare or match two dates反应比较或匹配两个日期
【发布时间】:2020-05-07 04:54:13
【问题描述】:

我在 React JS 中遇到问题。我想将start_dateheader date 进行比较或匹配

休息 API

[
{
"id": "1",
"staff_name": "Jill",
"custom_service_name": "Jone",
"start_date": "2020-05-06 11:30:00",
"end_date": "2020-05-06 11:45:00",
},
{
"id": "2",
"staff_name": "james",
"custom_service_name": "smith",
"start_date": "2020-05-06 11:00:00",
"end_date": "2020-05-06 11:15:00",
}
]

console.log 数据:


1:00 AM   //start_date
["9:43:36 AM", "9:13:36 AM", "10:13:36 AM"]    //header_date
12:00 PM
["9:43:36 AM", "9:13:36 AM", "10:13:36 AM"]    //header_date
2:15 AM
["9:43:36 AM", "9:13:36 AM", "10:13:36 AM"]    //header_date

我的代码:

var currentdate = new Date();  //header_date logic
var prevdate = new Date();
var firstdate = new Date();
prevdate.setTime(currentdate.getTime() - (30 * 60 * 1000));
firstdate.setTime(currentdate.getTime() + (30 * 60 * 1000));
var current = currentdate.toLocaleTimeString();
var previous = prevdate.toLocaleTimeString();
var first = firstdate.toLocaleTimeString();


    var headerdate = [previous ,current, first];


    this.state = {
      headerdate:headerdate,
      appointmentdata:[]
    }


componentDidMount() {    //get start_date
    axios.get(`http://localhost/route/v1/appointment`)
      .then(res => {
        const appointmentdata = res.data;
        console.log(appointmentdata);
        this.setState({ appointmentdata });
      })
  }

我尝试了,但这个逻辑不起作用

render() { return ( 
  <div>
    {this.state.appointmentdata.map(data => 
    { const dateTime = moment(data.start_date.toString()); 
      if (dateTime.format("h:mm A") === this.state.headerdate) 
      { 
        return <p>{dateTime.format("h:mm A")}</p>; } //return the match date 
      else { return null; } })} 



演示:

https://codesandbox.io/s/quizzical-browser-9e3g4

我该怎么办? 谁能帮帮我

【问题讨论】:

  • 请为此使用codesandbox.io 创建一个small demo 以显示正在发生的问题。
  • 确定@palaѕн
  • 相比之下,您应该具有相同的格式。根据您的日志,headerdate["9:43:36 AM",但与 .format("h:mm A") 相比
  • 可以吗?你能写代码吗? @rajesh
  • 您了解这个问题吗? @palaѕн

标签: javascript reactjs date datetime compare


【解决方案1】:

我看到您正在使用 Moment。所以你可以使用他们的isSame 内置助手来实现这一点。

文档:https://momentjs.com/docs/#/query/is-same/

示例代码:

const isSameDate = (start_date, header_date) => {
  const startDate = moment(start_date);
  const headerDate = moment(header_date);

  return startDate.isSame(headerDate, 'day');
}

一个小提示,您应该将日期检查移到render 方法之外,这将使您的代码更易于阅读和维护

【讨论】:

  • 但我将此代码与我的数据匹配或比较 start_dateheader date @Hong
  • 你能告诉我我该怎么做吗?用我的数据@Hong
  • 我刚刚修改了我的答案以匹配您的上下文。确保 start_dateheader_date 只是一个简单的日期时间字符串
  • 好的,让我检查一下@Duc Hong
  • 我试试你的代码但是日期格式问题@Duc Hong
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多