DateTimePicker之禁用当前日期时间之前的数据以及校验函数

本文主要是介绍DateTimePicker之禁用当前日期时间之前的数据以及校验函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、禁用当前日期时间功能效果

dateTimePicker禁用当前日期时间

2、需要用到的属性

  1. disabledDate: 禁用日期。
  2. disabledTime: 禁用时间。

3、相关代码

fieldProps={{disabledDate(date) {return date && date < moment().startOf('day');},disabledTime: (date: any) => disabledTime(date),}}//相关函数-----------------------------/*** 根据传入参数生成一个数组* @param start 数组起始值* @param end 数组截止值*/const range = (start: number, end: number) => {const result = [];for (let i = start; i < end; i++) {result.push(i);}return result;};/*** dateTimePicker的禁用时间设置* @param dates 日期组件选中时间* @param disabledDate 禁用时间的起点,默认为当前时间* @param options { isNeedAddHour: 是否需要加小时,addHourNum:要加多少小时}*/const disabledTime = (dates: any,disabledDate = new Date(),options = {isNeedAddHour: false,addHourNum: 0,},) => {let curDate = disabledDate;let hours = curDate.getHours() + options.addHourNum;let minutes = curDate.getMinutes();let seconds = curDate.getSeconds();//获取选择的时间let selHours = moment(dates).hours();let selMinutes = moment(dates).minutes();if (dates && moment(dates).date() === moment().date()) {//判断选中的是当天return {disabledHours: () => range(0, hours), // 禁用当前小时之前的小时disabledMinutes: () => {if (selHours != null && selHours === hours) {//判断选中的是当前小时return range(0, minutes);}return [];},disabledSeconds: () => {if (selMinutes != null && selMinutes === minutes) {//  判断选中的是当前分钟return range(0, seconds);}return [];},};}return {disabledHours: () => [],disabledMinutes: () => [],disabledSeconds: () => [],};};

4、如果当前表单中有两个DateTimePicker,且后一个要根据前一个进行禁用、校验相关的配置的话

第二个组件的禁用、校验设置可以这么写

//禁用
fieldProps={{disabledDate(date) {// 没选择计划发车时间,就默认禁用今天之前的时间// 选择了就禁用planDate之前的时间let selectedPlanData =editFormRef.current.getFieldValue('planDate');return !!selectedPlanData? date &&date < moment(new Date(selectedPlanData)).startOf('day'): date && date < moment().startOf('day');},disabledTime: (date: any) => {let selectedPlanData =editFormRef.current.getFieldValue('planDate');return disabledTime(date,new Date(!!selectedPlanData ? selectedPlanData : null),{isNeedAddHour: true,addHourNum: 2,},);},
}}
// 校验
rules={[{validator(rule, value, callback) {let selectedPlanDate =editFormRef.current.getFieldValue('planDate');if (!value) {callback('不能为空');} else if (moment(value).isBefore(moment())) {return callback('时间不能小于当前时间');} else if (moment(value).isBefore(moment(selectedPlanDate))) {callback('时间不能小于计划发车时间');} else if (moment(value).isAfter(moment(selectedPlanDate)) &&moment(value).isBefore(moment(selectedPlanDate).add(2, 'hours'),)) {callback('至少大于计划发车时间两小时');} else {callback();}},},
]}

这篇关于DateTimePicker之禁用当前日期时间之前的数据以及校验函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/463263

相关文章

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客