【问题标题】:Calculate the difference between two dates in javascript using react使用反应计算javascript中两个日期之间的差异
【发布时间】:2018-02-20 11:16:23
【问题描述】:

我试图通过两个日期选择器和两个时间选择器(一个反应组件)来获得两个日期之间的区别。日期是预订的,我想通过用“开始日期”减去“结束日期”来获得持续时间,但是当我减去两个超过 24 小时的日期时,我有一个 -152 或一个不对应的值实际持续时间。

代码

periodReserve = (e, idPark, title ) => {
let Start_Day = this.state.startDate && this.state.startDate.format(Formatdate);
let Start_Hour = this.state.time && this.state.time.format(formatHour);
let End_Day = this.state.endDate && this.state.endDate.format(Formatdate);
let End_Hour = this.state.timeEnd && this.state.timeEnd.format(formatHour);
let diff = this.state.timeEnd - this.state.startDate;
console.log(diff);}

第一个 DatePicker 和 TimePicker 的代码(用于开始)

<DatePicker
  id="calendar"
  className="TestIcon"
  dateFormat='YYYY-MM-DD'
  placeholderText="Date de fin"
  selected={this.state.startDate}
  onChange={this.handleChangeStart}/>

<TimePicker showSecond={false}
     placeholder={time}
     onChange={this.onChangeStart}> </TimePicker>

第二个dataPicker和TimePicker的代码

<DatePicker
    id="calendar"
    className="TestIcon"
    dateFormat='YYYY-MM-DD'
    selected={this.state.endDate}
    onChange={this.handleChangeEnd}/>

 <TimePicker showSecond={false}
  placeholder={timeEnd}
  onChange={this.onChangeEnd}> </TimePicker>

【问题讨论】:

标签: javascript reactjs semantic-ui


【解决方案1】:

使用momentJS的示例代码

this.state = {startDate:1519026163000, timeEnd:1519126755000} // example

const startDate = moment(this.state.startDate);
const timeEnd = moment(this.state.timeEnd);
const diff = timeEnd.diff(startDate);
const diffDuration = moment.duration(diff);

console.log("Total Duration in millis:", diffDuration.asMilliseconds());
console.log("Days:", diffDuration.days());
console.log("Hours:", diffDuration.hours());
console.log("Minutes:", diffDuration.minutes());
console.log("Seconds:", diffDuration.seconds());
&lt;script src="https://momentjs.com/downloads/moment.js"&gt;&lt;/script&gt;

【讨论】:

  • 谢谢,这正是我需要的!!
【解决方案2】:
  const dateConverter = (startDate, timeEnd) => {
    const newStartDate= new Date(startDate);
    const newEndDate=new Date(timeEnd);
    const one_day = 1000*60*60*24;
    let result
    result = Math.ceil((newEndDate.getTime()-newStartDate.getTime())/(one_day))
    console.log('date Converter result', result)
    if (result < 0 ) {return 0}
    return result
  }

几天后的结果

【讨论】:

    【解决方案3】:

    它是小库

    click for reference

    npm i moment

      const dateConverter = (startDate, timeEnd) => {
         const newStartDate= new Date(startDate);
         const newEndDate=new Date(timeEnd);
         let result=moment(newStartDate).diff(newEndDate,'days')
         return result   }
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案4】:

    对sn-p的快速评论

    如果您想要像 250 天这样的绝对值。 你应该使用这个:

    diffDuration.asDays()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-01
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多