由于要发布定时任务,所以传递给后端的日期只能是周一,由于laydate本身不能强制将其他的都禁用,查看了其他博主的文章需要引入layui太麻烦,这里将用户选择的非周一的日期强制转换为周一。
/* 日期选择控件 */
laydate({
elem: vm.$refs[elName],
istime: true,
//min: minDate,
format: 'YYYY-MM-DD',
choose: function (datas) {
vm.item[elName] = '' + datas;
//将时间格式改为我们需要的
var dateTime = vm.item.start_time.split('-')
vm.date = new Date(vm.item.start_time); //指定在对象中存储的日期
// console.log(typeof(vm.date),typeof(vm.item.start_time),'---');
// 打印的结果为 object string ---
// getDay()代表获取的时间vm.date是周几的
var weekDay= vm.date.getDay()
// 如果选到周日的话,时间转为上周周一的
//这里是因为laydate默认从周日开始,所以选择周日的话会强制转换到下周一,这里强制转换为本周的周一
if (weekDay == 0) {
weekDay = 7
}
// 无论选择周一到周日的哪一天,都默认转换到周一的0点
dateTime = new Date(Number(dateTime['0']),(Number(dateTime['1'])-1),Number(dateTime['2'])- weekDay)
dateTime.setDate(dateTime.getDate() + 1)
// 先从本地时间格式转为字符串格式,再将日期中的 / 转为 -
vm.date = new Date(dateTime).toLocaleString().split('/').join('-')
// 如果用户选择的不是周一,则提示并在关闭弹窗后强制转为选定当前周的周一
if (vm.date != vm.item.start_time) {
tipB = box.dialog({
title: '',
content: '您选择的时间'+vm.item.start_time+'不是周一,将转换到所在的周的周一'+vm.date,
ok: function () {
vm.item.start_time = vm.date
},
okValue: '确定'
}).showModal();
}
console.log(vm.date);
}
});
关于一些new Date()日期格式处理的方法不太明白具体使用方法的可以参考这个大佬写的博客:https://blog.csdn.net/zwt_guiji/article/details/80258944