结束时间在开始时间之后,且开始时间结束时间间隔一天
<template>
<a-row class="form-row" :gutter="16">
<a-col :lg="12" :md="12" :sm="24">
<a-form-item
label="开始时间"
:labelCol="{lg: {span: 10}, sm: {span: 7}}"
:wrapperCol="{lg: {span: 14}, sm: {span: 17} }"
>
<a-date-picker
v-model="startTime"
show-time
format="YYYY-MM-DD HH:mm:ss"
placeholder="Start"
@openChange="handleStartOpenChange"
/>
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :sm="24">
<a-form-item
label="结束时间"
:labelCol="{lg: {span: 6}, sm: {span: 7}}"
:wrapperCol="{lg: {span: 14}, sm: {span: 17} }"
>
<a-date-picker
v-model="endTime"
show-time
format="YYYY-MM-DD HH:mm:ss"
placeholder="end"
@openChange="handleEndOpenChange"
/>
</a-form-item>
</a-col>
</a-row>
</template>
<script>
import moment from 'moment'
export default {
data () {
return {
endTime: '',
startTime: '',
endOpen: false,
}
},
mounted () {
this.$nextTick(() => {})
},
methods: {
/* 开始时间 */
handleStartOpenChange (open) {
if (!open) {
this.endOpen = true
}
/* 时间组件关闭 */
if (this.endOpen) {
this.startTime = moment(this.startTime).format('YYYY-MM-DD HH:mm:ss')
/* 开始时间必须在结束时间之前 */
if (moment(this.endTime).isBefore(this.startTime, 'day')) {
//结束时间为开始时间的后一天
this.endTime = moment(this.startTime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
}
if (this.endTime !== null) {
this.endTime = moment(this.endTime).format('YYYY-MM-DD HH:mm:ss')
this.timeBetween(this.startTime, this.endTime, 'start')
} else {
this.endTime = moment(this.startTime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
}
}
},
/* 结束时间 */
handleEndOpenChange (open) {
this.endOpen = open
/* 时间组件关闭 */
if (!this.endOpen) {
this.endTime = moment(this.endTime).format('YYYY-MM-DD HH:mm:ss')
/* 开始时间必须在结束时间之前 */
if (moment(this.endTime).isBefore(this.startTime, 'day')) {
// 开始时间为结束时间的前一天
this.startTime = moment(this.endTime).subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')
}
if (this.startTime !== null) {
this.startTime = moment(this.startTime).format('YYYY-MM-DD HH:mm:ss')
this.timeBetween(this.startTime, this.endTime, 'end')
} else {
this.startTime = moment(this.endTime).subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')
}
}
},
//处理时间间隔为一天的问题
timeBetween (startTime, endTime, startOrEnd) {
var moment = require('moment')
const totalMinute = moment(endTime).diff(startTime) / (1000 * 60)
const hours = Math.floor(totalMinute / 60)
const minute = totalMinute % 60
let result = ''
if (hours > 0) {
result = result + hours
if (result > 24) {
if (startOrEnd === 'start') {
this.endTime = moment(startTime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
} else if (startOrEnd === 'end') {
this.startTime = moment(this.endTime).subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')
}
}
} else if (hours === 0) { // 选中时间没有间隔
if (startOrEnd === 'start') {
this.endTime = moment(startTime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
} else if (startOrEnd === 'end') {
this.startTime = moment(this.endTime).subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')
}
}
if (minute > 0) {
result = result + minute + '分钟'
}
if (totalMinute > 1440) {
if (startOrEnd === 'start') {
this.endTime = moment(startTime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
} else if (startOrEnd === 'end') {
this.startTime = moment(this.endTime).subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')
}
} else if (totalMinute === 1440) {
if (startOrEnd === 'start') {
this.endTime = moment(startTime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
} else if (startOrEnd === 'end') {
this.startTime = moment(this.endTime).subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss')
}
}
}
}
}
</script>