根据数据查询需求:
选择查询的月份时,当所选月份为当前月时,获取当天日期 。 非当前月时,获取所选月的最后一天 ,为了简便,我就把所有的endDate时间都设置成了所选月份的最后一天。
用到的部分HTML如下:(可以根据自己的需要去适当删减一些)
<span class="label" prop="endDate">日期:</span>
<el-date-picker popper-class="electric-date" v-model="selectedMonth" type="month" placeholder="请选择时间" :picker-options="pickerOptions" style="width: 200px;">
</el-date-picker>
export default {
data() {
selectedMonth: new Date(),
lastDayOfMonth: "",
date: "",
endDate: "",
formattedDate: "",
}
}
如果需要在接口函数里作为请求参数传下去可以把拿到的最后一天写进接口函数里
methods: {
abc() {
this.loading = true;
let today = this.selectedMonth;
let year = today.getFullYear();
let month = today.getMonth() + 1;
// 获取下个月的第一天
let nextMonthFirstDay = new Date(year, month, 1);
// 减去一天得到本月最后一天
let lastDayOfMonth = new Date(nextMonthFirstDay - 1);
let lastDay = lastDayOfMonth.getDate().toString().padStart(2, '0');
let lastMonth = (lastDayOfMonth.getMonth() + 1).toString().padStart(2, '0');
let formattedDate = `${year}-${lastMonth}-${lastDay}`;
let param = {
projectId: this.projectId,
endDate: formattedDate,
};
let self = this;
API.abc(param).then(function (res){
// 需要实现的逻辑
}
}
如果需要所选月份为当前月时,获取当天日期 。可以对let today的选值做一下限制,当let today = new Date();时选择本月时获取到的时间为当前日期。
这个问题本来不难只是我对选择的日期给值时给错了,导致这个问题排查用了会儿时间,这个问题在网上也有很多方法,我也是用了其中一种
对于网上说的获取当前日期的一个方法也很受用,只是我没用和我个人上边的代码没有啥关系,但是觉得不错,我放在下面可以根据自己的实际情况参考来用
formatDate () {
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth();
var date = now.getDate();
month = month + 1;
if (month < 10){
month = "0" + month;
}
if (date < 10) {
date = "0" + date;
}
var time = year + "-" + month + "-" + date;
return time;
},