首先需要两个工具函数 ,文件名:rqformat.js
// 日期转时间戳
const getUnixTime = (dateStr) => {
// let newstr = dateStr.replace(/-/g, '/')
let date = new Date(dateStr)
let time_str = date.getTime().toString()
return time_str.substring(0, 10)
}
// 判断两个日期时间戳相差多少天,参数为时间戳
const dateCompare = (dateTimeStamp1, dateTimeStamp2) => {
let dayNum = 0
let date1 = Number(dateTimeStamp1)
let date2 = Number(dateTimeStamp2)
if (date1 > date2) {
dayNum = Math.floor((date1 - date2) / 86400)
} else {
dayNum = Math.floor((date2 - date1) / 86400)
}
return dayNum
}
module.exports = {
getUnixTime: getUnixTime,
dateCompare: dateCompare
}
页面样式 也就是wxml文件
<view class="pick_condition" style="height:48px;">
<view class="text1">开始日期:</view>
<picker class="pick" mode="date" start="1900-01-01" value="{{startDate}}" end="2100-01-01"
bindchange="bindStartDate">
<view class="pick_text">{{startDate}}</view>
</picker>
<view class="right-icon">></view>
</view>
<view class="pick_condition" style="height:48px;">
<view class="text1">结束日期:</view>
<picker class="pick" mode="date" start="1900-01-01" value="{{endDate}}" end="2100-01-01"
bindchange="bindEndDate">
<view class="pick_text">{{endDate}}</view>
</picker>
<view class="right-icon">></view>
</view>
对应的js文件
bindStartDate(e) {
var startDateUnix = rqformat.getUnixTime(e.detail.value)
var endDateUnix = rqformat.getUnixTime(this.data.endDate)
var diffInDays = rqformat.dateCompare(startDateUnix, endDateUnix)
console.log(diffInDays)
// 判断天数差并调整
if (diffInDays > 31) {
var endDate = new Date(this.data.endDate)
if (Number(endDateUnix) > Number(startDateUnix)) {
endDate.setDate(endDate.getDate() - diffInDays + 31);
} else {
endDate.setDate(endDate.getDate() + diffInDays + 31);
}
var adjustedEndDateStr = endDate.toISOString().split('T')[0];
this.setData({
endDate: adjustedEndDateStr,
startDate: e.detail.value
})
} else {
this.setData({
endDate: this.data.endDate,
startDate: e.detail.value
})
}
},
bindEndDate(e) {
var startDateUnix = rqformat.getUnixTime(this.data.startDate)
var endDateUnix = rqformat.getUnixTime(e.detail.value)
// 时间差
var diffInDays = rqformat.dateCompare(startDateUnix, endDateUnix)
console.log(diffInDays)
// 判断天数差并调整
if (diffInDays > 31) {
var startDate = new Date(this.data.startDate)
if (Number(endDateUnix) > Number(startDateUnix)) {
startDate.setDate(startDate.getDate() + diffInDays - 31);
var adjustedStartDateStr = startDate.toISOString().split('T')[0];
} else {
startDate.setDate(startDate.getDate() - diffInDays - 31);
var adjustedStartDateStr = startDate.toISOString().split('T')[0];
}
this.setData({
startDate: adjustedStartDateStr,
endDate: e.detail.value
})
} else {
this.setData({
startDate: this.data.startDate,
endDate: e.detail.value
})
}
},