el-date-picker日期時(shí)間選擇器的選擇時(shí)間限制到分鐘級(jí)別
有個(gè)需求是限制選擇的時(shí)間,禁止選擇當(dāng)前時(shí)間的日期及時(shí)分,如果日期選擇的不是今天,時(shí)間還是要能選擇全天的時(shí)分
一、代碼展示
<template> <el-date-picker v-model="date" type="datetime" format="YYYY-MM-DD HH:mm" time-format="HH:mm" v-bind="pickerOptions" placeholder="選擇日期時(shí)間"> </el-date-picker> </template> <script lang="ts" setup> import { ref, computed } from 'vue' const date = ref('') /** * 生成一個(gè)數(shù)組 * @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 } /** * 限制今天之前的時(shí)間不能選擇(小時(shí)) */ const disabledHours = () => { let newVal = new Date(date.value) if (newVal && newVal.getFullYear() == new Date().getFullYear() && newVal.getMonth() == new Date().getMonth() && newVal.getDate() == new Date().getDate() ) { //如果為今天,則限制當(dāng)前時(shí)間前的時(shí)間不能選擇。 return makeRange(0, new Date().getHours() - 1) } } /** * 限制今天之前的時(shí)間不能選擇(分鐘) * @param hour */ const disabledMinutes = (hour: number) => { let newVal = new Date(date.value) if (newVal && newVal.getFullYear() == new Date().getYear() && newVal.getMonth() == new Date().getMonth() && newVal.getDate() == new Date().getDate() ) { //如果為今天,則限制當(dāng)前時(shí)間前的時(shí)間不能選擇。 return makeRange(0, new Date().getMinutes() - 1) } } /** * 限制今天之前的時(shí)間不能選擇的配置 */ const pickerOptions = computed(() => { return { // 限制今天之前的日期不能選擇 disabledDate(time: any) { return time.getTime() < Date.now() - 8.64e7 }, // 限制今天之前的小時(shí)不能選擇 disabledHours, // 限制今天之前的分鐘不能選擇 disabledMinutes } }) </script>
二、代碼解釋 模板部分 (<template>)
- 使用 el-date-picker
組件:
- v-model="date"
: 將用戶選擇的日期和時(shí)間綁定到 date
變量。
- type="datetime"
: 表明此日期選擇器可以同時(shí)選擇日期和時(shí)間。
- format="YYYY-MM-DD HH:mm"
: 定義日期和時(shí)間的顯示格式。
- time-format="HH:mm"
: 單獨(dú)定義時(shí)間部分的顯示格式。
- v-bind="pickerOptions"
: 將 pickerOptions
對(duì)象的屬性綁定到 el-date-picker
組件上,以實(shí)現(xiàn)對(duì)日期和時(shí)間選擇的限制。
腳本部分 (<script>
)
1. 導(dǎo)入和響應(yīng)式數(shù)據(jù)聲明
- import { ref, computed } from 'vue'
: 從 Vue 3 的 vue
包中導(dǎo)入 ref
和 computed
函數(shù)。
- const date = ref('')
: 創(chuàng)建一個(gè)響應(yīng)式的 date
變量,用于存儲(chǔ)用戶選擇的日期和時(shí)間。初始值為空字符串。
2. makeRange 函數(shù)
const makeRange = (start: number, end: number) => { const result: number[] = []; for (let i = start; i <= end; i++) { result.push(i); } return result; }
- 此函數(shù)接收兩個(gè)數(shù)字參數(shù)
start
和end
。 - 創(chuàng)建一個(gè)空數(shù)組
result
。 - 通過(guò)
for
循環(huán)將從start
到end
的數(shù)字添加到result
數(shù)組中。
3. disabledHours 函數(shù)
const disabledHours = () => { let newVal = new Date(date.value); if (newVal && newVal.getFullYear() == new Date().getFullYear() && newVal.getMonth() == new Date().getMonth() && newVal.getDate() == new Date().getDate() ) { return makeRange(0, new Date().getHours() - 1); } }
- 創(chuàng)建一個(gè)
newVal
對(duì)象,通過(guò)date.value
來(lái)初始化。 - 檢查
newVal
是否為今天的日期。 - 如果是今天,使用
makeRange
函數(shù)生成一個(gè)數(shù)組,包含從 0 到當(dāng)前小時(shí)減 1 的小時(shí)數(shù),表示這些小時(shí)不可選。
4.disabledMinutes 函數(shù)
const disabledMinutes = (hour: number) => { let newVal = new Date(date.value); if (newVal && newVal.getFullYear() == new Date().getYear() && newVal.getMonth() == new Date().getMonth() && newVal.getDate() == new Date().getDate() ) { return makeRange(0, new Date().getMinutes() - 1); } }
- 與
disabledHours
函數(shù)類(lèi)似,但是它接收一個(gè)hour
參數(shù)(此處似乎未使用)。 - 檢查是否為今天,如果是,則使用
makeRange
函數(shù)生成一個(gè)數(shù)組,包含從 0 到當(dāng)前分鐘減 1 的分鐘數(shù),表示這些分鐘不可選。
5. pickerOptions 計(jì)算屬性
const pickerOptions = computed(() => { return { // 限制今天之前的日期不能選擇 disabledDate(time: any) { return time.getTime() < Date.now() - 8.64e7; }, // 限制今天之前的小時(shí)不能選擇 disabledHours, // 限制今天之前的分鐘不能選擇 disabledMinutes }; });
computed(() => {...})
: 這是一個(gè)計(jì)算屬性,返回一個(gè)對(duì)象,包含對(duì)日期選擇器的配置選項(xiàng)。disabledDate(time: any) {...}
: 接收一個(gè)time
對(duì)象,將其轉(zhuǎn)換為時(shí)間戳,如果小于當(dāng)前時(shí)間戳減去一天的毫秒數(shù)(8.64e7
毫秒是一天),則該日期不可選。disabledHours
: 引用disabledHours
函數(shù),用于限制某些小時(shí)不可選。disabledMinutes
: 引用disabledMinutes
函數(shù),用于限制某些分鐘不可選。
三、效果展示
到此這篇關(guān)于el-date-picker日期時(shí)間選擇器的選擇時(shí)間限制到分鐘級(jí)別的文章就介紹到這了,更多相關(guān)el-date-picker選擇時(shí)間到分內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)帶自動(dòng)吸附功能的懸浮球
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)帶自動(dòng)吸附功能的懸浮球,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Vue3 響應(yīng)式數(shù)據(jù) reactive使用方法
這篇文章主要介紹了Vue3 響應(yīng)式數(shù)據(jù) reactive使用方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-11-11Vue3.5中響應(yīng)式Props解構(gòu)的編譯原理
在Vue3.5版本中,響應(yīng)式Props的解構(gòu)功能正式轉(zhuǎn)正,該功能允許即使在解構(gòu)后也不丟失響應(yīng)性,文通過(guò)編譯階段的處理,如何保持解構(gòu)后的props變量仍保持響應(yīng)性,編譯過(guò)程中的defineProps宏函數(shù)處理,通過(guò)AST和上下文操作實(shí)現(xiàn)變量替換,從而讓解構(gòu)后的變量在運(yùn)行時(shí)維持響應(yīng)式狀態(tài)2024-09-09vue2使用element-ui,el-table不顯示,用npm安裝方式
這篇文章主要介紹了vue2使用element-ui,el-table不顯示,用npm安裝方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07