我正在尝试通过两个日期选择器和两个时间选择器(一个反应组件)来确定两个日期之间的区别。这个日期是预订的,我希望通过用“开始日期”减去“结束日期”来获得持续时间,但是当我减去超过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>
答案 0 :(得分: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());
<script src="https://momentjs.com/downloads/moment.js"></script>
答案 1 :(得分:0)
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
}
以天为单位的结果
答案 2 :(得分:-1)
对代码片段的快速评论
如果您想要像 250 天这样的绝对值。 你应该使用这个:
diffDuration.asDays()