
<template>
<view class="content">
<view>开始时间</view>
<input
type="text"
:value="startTime"
:disabled="true"
@click="getStart"
/>
<u-picker
mode="time"
v-model="isStartShow"
:params="yeardayparams" @confirm="startConfirm"></u-picker>
<view>结束时间</view>
<input
type="text"
:value="endTime"
:disabled="true"
@click="getend"
/>
<u-picker
mode="time"
v-model="isEndShow"
:params="yeardayparams" @confirm="endConfirm"></u-picker>
<view>
相关天数:{{days}}
</view>
</view>
</template>
<script>
export default {
data() {
return {
isStartShow:false,
yeardayparams:{
year: true,
month: true,
day: true,
hour: true
},
startTime:'',
endTime:'',
isEndShow:false,
days:''
}
},
onLoad() {
},
methods: {
getStart(){
console.log('sd')
this.isStartShow = true;
},
startConfirm(confirm){
if(confirm.hasOwnProperty('hour')){
this.startTime = `${confirm.year}-${confirm.month}-${confirm.day} ${confirm.hour}`
let d_datetime1 = new Date(this.startTime+':00:00')
let d_datetime2 = new Date(this.endTime+':00:00')
console.log('d_datetime2',d_datetime2)
if(d_datetime2 < d_datetime1){
uni.showToast({
title:"结束时间应大于开始时间",
icon:"none",
duration:3000
})
}
let newtime1 = new Date(d_datetime1).getTime();
let newtime2 = new Date(d_datetime2).getTime();
let newDay = this.countWorkDay(newtime1,newtime2)
console.log(newDay,'34')
}
},
getend(){
this.isEndShow=true
},
endConfirm(confirm){
if(confirm.hasOwnProperty('hour')){
this.endTime = `${confirm.year}-${confirm.month}-${confirm.day} ${confirm.hour}`
let d_datetime1 = new Date(this.startTime+':00:00')
let d_datetime2 = new Date(this.endTime+':00:00')
if(d_datetime2 < d_datetime1){
uni.showToast({
title:"结束时间应大于开始时间",
icon:"none",
duration:3000
})
}
let newtime1 = new Date(d_datetime1).getTime();
let newtime2 = new Date(d_datetime2).getTime();
let newDay = this.countWorkDay(newtime1,newtime2)
console.log(newDay,'35')
this.days = newDay
}
},
countWorkDay(sDay,eDay){
var sDay = new Date(sDay);
var eDay = new Date(eDay);
var diffDay = (eDay - sDay) / (1000 * 60 * 60 * 24) + 1;
var newSday = sDay.getTime()
var newEday = eDay.getTime()
var diff = newEday - newSday
var days = Math.floor(diff / (24*3600*1000))
var leave1 = diff%(24*3600*1000)
var hours = Math.floor(leave1/(3600*1000))
if(hours <= 4 && days == 0){
return 0.5
}else if(hours > 4 && days == 0){
return days + 1;
}
if(parseInt(diffDay) == 0)
return parseInt(diffDay);
var weekEnds = 0;
for(var i = 0; i < diffDay; i++){
if(sDay.getDay() == 0 || sDay.getDay() == 6)
weekEnds ++;
sDay = sDay.valueOf();
sDay += 1000 * 60 * 60 * 24;
sDay = new Date(sDay);
}
if(weekEnds == 1 || weekEnds == 3 || weekEnds == 5 || weekEnds == 7){
return parseInt(diffDay - weekEnds) + 1;
}else{
return parseInt(diffDay - weekEnds);
}
},
}
}
</script>
<style>
.content{
padding:10px;
}
input{
border-radius:10px;
padding:10px;
border:1px solid #ccc;
}
</style>