laydate将选择的时间强制控制在当前周的某一天

由于要发布定时任务,所以传递给后端的日期只能是周一,由于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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值