vue3使用<el-date-picker分別設置開始時間和結束時間時,設置開始時間晚于當前時間,開始時間早于結束時間,結束時間晚于開始時間

vue3使用<el-date-picker分別設置開始時間和結束時間時,設置開始時間晚于當前時間,開始時間早于結束時間,結束時間晚于開始時間

為避免出現填寫結束事件后再次修改開始時間,導致開始時間晚于結束時間,添加 @change=“handleChangeStartTime”
進一步進行時間校驗

<el-date-pickerv-else-if="item.type === 'datetimestart'"v-model="state.ruleForm[item.key]"type="datetime"format="YYYY-MM-DD HH:mm:ss"time-format="HH:mm:ss"value-format="YYYY-MM-DD HH:mm:ss"v-bind="pickerOptions"placeholder="選擇日期時間"@change="handleChangeStartTime"
>
</el-date-picker>
<el-date-pickerv-else-if="item.type === 'datetimeend'"v-model="state.ruleForm[item.key]"type="datetime"format="YYYY-MM-DD HH:mm:ss"time-format="HH:mm:ss"value-format="YYYY-MM-DD HH:mm:ss"v-bind="pickerOptionsEnd"placeholder="選擇日期時間"
>
</el-date-picker>
const handleChangeStartTime = () => {const startTime = convertToTimestamp(state.ruleForm.planStartTime);const endTime = convertToTimestamp(state.ruleForm.planEndTime);if (startTime > endTime) {ElMessage.warning('計劃開始時間晚于計劃結束時間,請重新添加計劃開始時間或計劃結束時間');}};/*** 生成一個數組* @param start* @param end*/const makeRange = (start: number, end: number) => {const result: number[] = [];for (let i = start; i <= end; i++) {result.push(i);}return result;};/*** 限制今天之前的時間不能選擇(小時)*/const disabledHours = () => {let newVal = new Date(state.ruleForm.planStartTime);if (newVal &&newVal.getFullYear() == new Date().getFullYear() &&newVal.getMonth() == new Date().getMonth() &&newVal.getDate() == new Date().getDate()) {//如果為今天,則限制當前時間前的時間不能選擇。return makeRange(0, new Date().getHours());}};/*** 限制今天之前的時間不能選擇(分鐘)* @param hour*/const disabledMinutes = () => {let newVal = new Date(state.ruleForm.planStartTime);if (newVal &&newVal.getFullYear() == new Date().getFullYear() &&newVal.getMonth() == new Date().getMonth() &&newVal.getDate() == new Date().getDate() &&newVal.getHours() == new Date().getHours()) {//如果為今天,則限制當前時間前的時間不能選擇。return makeRange(0, new Date().getMinutes() - 1);}};/*** 限制今天之前的時間不能選擇的配置*/const pickerOptions = computed(() => {return {// 限制今天之前的日期不能選擇disabledDate(time: any) {return time.getTime() < Date.now() - 8.64e7;},// 限制今天之前的小時不能選擇disabledHours,// 限制今天之前的分鐘不能選擇disabledMinutes,};});// 結束時間const pickerOptionsEnd = computed(() => {return {// 限制開始時間之前的日期不能選擇disabledDate(time: any) {return time.getTime() < convertToTimestamp(state.ruleForm.planStartTime) - 8.64e7;},// 限制開始時間之前的小時不能選擇disabledHours() {let newVal = new Date(state.ruleForm.planEndTime);const time = state.ruleForm.planStartTime;if (newVal &&newVal.getFullYear() == new Date(time).getFullYear() &&newVal.getMonth() == new Date(time).getMonth() &&newVal.getDate() == new Date(time).getDate()) {//限制開始時間前的時間不能選擇。return makeRange(0, new Date(time).getHours() - 1);}},// 限制開始時間之前的分鐘不能選擇disabledMinutes() {let newVal = new Date(state.ruleForm.planEndTime);const time = state.ruleForm.planStartTime;if (newVal &&newVal.getFullYear() == new Date(time).getFullYear() &&newVal.getMonth() == new Date(time).getMonth() &&newVal.getDate() == new Date(time).getDate() &&newVal.getHours() == new Date(time).getHours()) {//限制開始時間前的時間不能選擇。return makeRange(0, new Date(time).getMinutes() - 1);}},disabledSeconds() {let newVal = new Date(state.ruleForm.planEndTime);const time = state.ruleForm.planStartTime;if (newVal &&newVal.getFullYear() == new Date(time).getFullYear() &&newVal.getMonth() == new Date(time).getMonth() &&newVal.getDate() == new Date(time).getDate() &&newVal.getHours() == new Date(time).getHours() &&newVal.getMinutes() == new Date(time).getMinutes()) {//限制開始時間前的時間不能選擇。return makeRange(0, new Date(time).getSeconds());}// return makeRange(0, new Date(time).getSeconds() - 1);},};});/*** 將某個時間轉化成時間戳* 時間格式:2019-05-20 00:00:00 或 2019年5月1日 00:00:00* 返回值:1556640000000,13位時間戳*/// 示例日期字符串格式:"2023-05-15 14:30:00"function convertToTimestamp(dateString: string) {// 處理iOS兼容性問題(將短橫線替換為斜杠)const formattedDate = dateString.replace(/-/g, '/');const dateObj = new Date(formattedDate);return dateObj.getTime(); // 返回13位時間戳(毫秒級)}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79188.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79188.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79188.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習實操 第一部分 機器學習基礎 第7章 集成學習與隨機森林

機器學習實操 第一部分 機器學習基礎 第7章 集成學習與隨機森林 內容概要 第7章深入探討了集成學習方法&#xff0c;這是一種結合多個預測模型&#xff08;如分類器或回歸器&#xff09;以提高預測性能的技術。這些方法通過利用群體的智慧&#xff0c;可以比單個模型獲得更好…

React Native 開發環境搭建:從零開始

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

機器視覺橡膠制品檢測的應用

橡膠制品在生產過程中易出現劃痕、氣泡、缺料、毛邊、雜質嵌入等多種缺陷&#xff0c;這些缺陷往往微小且隨機分布&#xff0c;人工檢測不僅耗時&#xff0c;漏檢率也居高不下。尤其在汽車密封件、醫療硅膠制品等高端領域&#xff0c;微米級的缺陷都可能導致產品失效&#xff0…

1295.統計位數為偶數的數字

記錄 2025.4.30 題目&#xff1a; 思路&#xff1a; 1.數學觀察&#xff1a;位數不斷減去2&#xff0c;若最后位數為1則為奇數&#xff0c;反正為偶數。 2.庫函數&#xff1a;String.valueOf(int)或Integer.toString(int)函數&#xff08;快速獲得十進制的位數&#xff09;…

UniApp頁面路由詳解

一、路由系統概述 1.1 路由機制原理 UniApp基于Vue.js實現了一套跨平臺的路由管理系統&#xff0c;其核心原理是通過維護頁面棧來管理應用內不同頁面之間的跳轉關系。在小程序端&#xff0c;UniApp的路由系統會映射到對應平臺的原生導航機制&#xff1b;在H5端則基于HTML5 Hi…

氫混合氣配氣系統在傳感器檢測中的重要應用

? ?氫混合氣配氣系統是一種能夠精確配制氫氣與其他氣體&#xff08;如氮氣、空氣等&#xff09;混合比例的設備&#xff0c;在傳感器檢測領域具有非常廣泛的應用價值。隨著氫能技術的快速發展&#xff0c;氫氣傳感器的需求不斷增加&#xff0c;而氫混合氣配氣系統為傳感器…

IdeaVim 配置與使用指南

一、什么是 IdeaVim&#xff1f; IdeaVim 是 JetBrains 系列 IDE&#xff08;如 IntelliJ IDEA, WebStorm, PyCharm 等&#xff09;中的一個插件&#xff0c;讓你在 IDE 里使用 Vim 的按鍵習慣&#xff0c;大大提升效率。 安裝方法&#xff1a; 在 IDE 中打開 設置(Settings) →…

JVM GC垃圾回收算法

垃圾回收算法&#xff08;GC Algorithms&#xff09; JVM 根據對象生命周期特性&#xff08;分代假設&#xff09;采用不同的回收算法&#xff0c;核心算法包括&#xff1a; 標記-清除&#xff08;Mark-Sweep&#xff09; 此算法執行分兩階段。第一階段從引用根節點開始標記…

數智化招標采購系統針對供應商管理解決方案(采購如何管控供應商)

隨著《優化營商環境條例》深化實施&#xff0c;采購領域正通過政策驅動和技術賦能&#xff0c;全面構建供應商全生命周期管理體系&#xff0c;以規范化、數智化推動采購生態向透明、高效、智能方向持續升級。 鄭州信源數智化招標采購系統研發商&#xff0c;通過供應商管理子系…

Fiori學習專題二十五:Remote OData Service

之前我們都是使用本地JSON來顯示發票清單。這節課我們將調用一個UI5公共的OData Service 1.由于本地開發訪問OData服務https://services.odata.org/V2/Northwind/Northwind.svc/會產生跨域問題&#xff0c;所以這里我們需要使用代理 新建一個終端&#xff1a;執行&#xff1a;n…

文件讀取操作

如果需要從文件讀入數據&#xff0c;并把輸出數據保存為文件&#xff0c;需要使用文件讀取。 freopen為file reopen&#xff0c;意為文件重新打開&#xff0c;實現重定向標準輸入輸出第一個參數為文件名可以修改&#xff0c;輸入文件為.in&#xff0c;輸出文件為.out第二個參數…

[Linux網絡_68] 轉發 | 路由(Hop by Hop) | IP的分片和組裝

目錄 1.再談網絡轉發 2.路由 舉個例子 3.分片和組裝 IP 層 [Linux#67][IP] 報頭詳解 | 網絡劃分 | CIDR無類別 | DHCP動態分配 | NAT轉發 | 路由器 1.再談網絡轉發 我們在上一篇文章中知道了路由器的功能有&#xff1a; 轉發DHCP | 組建局域網NAT 組建局域網功能表現&…

如何使用C語言手搓斐波那契數列?

斐波那契數列&#xff0c;第0項為0&#xff0c;第1項為1&#xff0c;第2項開始每項等于前兩之和。&#xff08;有些題目從第一項開始&#xff0c;第一項為1&#xff0c;第二項也為1&#xff09;。 運行時&#xff0c;輸入的n代表的是項數&#xff0c;而輸出則代表的是該項的值。…

java: 警告: 源發行版 21 需要目標發行版 21

解決這個問題看三個地方的SDK版本信息是否正確&#xff1a; 1&#xff0c;打開cmd命令&#xff0c;輸入 java -version ,查看版本是否正確&#xff1b; 2&#xff0c;打開模塊設置&#xff08;F4&#xff09;&#xff0c;查看項目的SDK 3&#xff0c;查看模塊的SDK

一區思路!挑戰5天一篇NHANES預測模型 DAY1-5

挑戰5天一篇預測模型NHANES Day1! 近期美國關閉seer數據庫的信息在互聯網上廣泛傳播&#xff0c;大家都在擔心數據庫挖掘是否還能做。這個問題其實是有答案的&#xff0c;數據庫挖掘肯定能做&#xff0c;做沒被關的數據庫即可&#xff0c;同時留意一些國產數據庫&#xff5e;…

centos7安裝NVIDIA顯卡

裝備工作 我的系統版本 cat /etc/centos-releaseCentOS Linux release 7.9.2009 (Core) 內核版本 rpm -q kernel或者 rpm -qa|grep kernelkernel-3.10.0-1160.el7.x86_64 注意以上輸出內核版本&#xff0c;按照我下面的操作步驟&#xff0c;不會出問題。否則重裝系統都有可…

Web應用開發指南

一、引言 隨著互聯網的迅猛發展&#xff0c;Web應用已深度融入日常生活的各個方面。為滿足用戶對性能、交互與可維護性的日益增長的需求&#xff0c;開發者需要一整套高效、系統化的解決方案。在此背景下&#xff0c;前端框架應運而生。不同于僅提供UI組件的工具庫&#xff0c…

Java @Transactional事物隔離級別和默認值詳解

在 Java 開發中&#xff0c;Transactional 注解是 Spring 框架中用于管理事務的重要工具。它提供了多種配置選項&#xff0c;其中事務隔離級別是一個關鍵屬性。本文將深入探討 Transactional 注解的隔離級別默認值&#xff0c;并通過具體代碼示例幫助你更好地理解和應用事務隔離…

車輛檢測新突破:VFM-Det 如何用大模型提升識別精度

目錄 ?編輯 一、摘要 二、引言 三、相關工作 四、Coovally AI模型訓練與應用平臺 五、方法 概述 綜述&#xff1a;基于區域建議的檢測 基于VehicleMAE的感知器 六、實驗分析 數據集與評估指標 實現細節 屬性預測模塊預訓練 與SOTA檢測器的對比實驗 消融實驗 V…

微格式:為Web內容賦予語義的力量

一、什么是微格式? 微格式是一種建立在已有 Web 標準基礎上的簡單、開放的數據格式。它的核心思想是通過在 HTML 標簽中添加特定的屬性和類名,為網頁內容添加語義注解,從而兼顧 HTML 文檔的人機可讀性。 簡單來說,微格式就是一套約定俗成的 HTML 標記方式,讓我們能夠在不…