element日期時(shí)間選擇器限制時(shí)間選擇功能實(shí)現(xiàn)(精確到小時(shí))
需求:選一個(gè)開始時(shí)間,要求精確到小時(shí),小于當(dāng)前時(shí)刻的小時(shí)不讓選擇,只能往后選7天。
如圖:
需要element的DateTimePicker 日期時(shí)間選擇器
部分代碼如下:
<el-form-item label="出發(fā)時(shí)間:" prop="startTime"> <el-date-picker v-model="editForm.startTime" :picker-options="pickerOptions"http:// 控制時(shí)間選擇 format="yyyy-MM-dd HH:mm" type="datetime" placeholder="選擇日期時(shí)間" /> </el-form-item>
pickerOptions: { disabledDate(time) { let dateTime = new Date(); let startDateTime = dateTime.setDate(dateTime.getDate() - 1); let endDateTime = dateTime.setDate(dateTime.getDate() + 7); return ( time.getTime() < new Date(startDateTime).getTime() || time.getTime() > new Date(endDateTime).getTime() ); }, selectableRange: new Date(new Date().setHours(new Date().getHours() + 1)).format( 'hh' ) + ':00:00 - 23:59:00' },
selectableRange:可選時(shí)間段
startDateTime 時(shí)間戳
new Date(startDateTime) 標(biāo)準(zhǔn)時(shí)間
new Date(startDateTime).getTime() 時(shí)間戳
還需要watch監(jiān)聽和computed,如果不監(jiān)聽,那么每一天的當(dāng)前小時(shí)都會(huì)被禁用
computed: { startTime() { return this.editForm.startTime; } }, watch: { startTime: function(newVal, oldVal) { let selectDate = newVal.format('yyyyMMdd'); let oldDate = oldVal.format('yyyyMMdd'); let nowDate = new Date().format('yyyyMMdd'); // 如果兩次選擇的時(shí)間不相等 if (oldDate !== selectDate) { // 如果這次選擇的時(shí)間等于今天的時(shí)間就不讓選當(dāng)前小時(shí)之前,否則就可以選全部時(shí)間段 if (selectDate === nowDate) { this.pickerOptions.selectableRange = new Date(new Date().setHours(new Date().getHours() + 1)).format( 'hh' ) + ':00:00 - 23:59:00'; } else { this.pickerOptions.selectableRange = '00:00:00 - 23:59:00'; } let realNewVal = new Date( newVal.format('yyyy-MM-dd') + oldVal.format(' hh:mm:ss') ); // 如果這個(gè)時(shí)間比當(dāng)前時(shí)間小,就等于當(dāng)前時(shí)間,否則等于這個(gè)參數(shù)的時(shí)間 if (realNewVal.getTime() < new Date().getTime()) { this.editForm.startTime = new Date(); } else { this.editForm.startTime = realNewVal; } } } },
重寫了format方法,代碼如下:格式化時(shí)間也可以用庫(kù),比如moment
/** * 格式化日期 */ export const dateFormat = function() { /* eslint-disable no-extend-native */ Date.prototype.format = function(fmt) { let o = { 'M+': this.getMonth() + 1, // 月份 'd+': this.getDate(), // 日 'h+': this.getHours(), // 小時(shí) 'm+': this.getMinutes(), // 分 's+': this.getSeconds(), // 秒 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度 S: this.getMilliseconds() // 毫秒 }; if (/(y+)/.test(fmt)) { fmt = fmt.replace( RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length) ); } for (let k in o) { if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace( RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length) ); } } return fmt; }; };
注意:Date 對(duì)象(Date 對(duì)象用于處理日期與時(shí)間)
new Date() 中國(guó)標(biāo)準(zhǔn)時(shí)間
到此這篇關(guān)于element日期時(shí)間選擇器限制時(shí)間選擇功能實(shí)現(xiàn)(精確到小時(shí))的文章就介紹到這了,更多相關(guān)element日期時(shí)間選擇器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Element Plus 日期選擇器獲取選中的日期格式(當(dāng)前日期/時(shí)間戳格式)
- element-ui時(shí)間日期選擇器限制選擇范圍的幾種場(chǎng)景
- element?ui時(shí)間日期選擇器el-date-picker報(bào)錯(cuò)Prop?being?mutated:"placement"解決方式
- 關(guān)于element-ui日期時(shí)間選擇器選不中12小時(shí)以后的時(shí)間詳解
- ElementUI日期選擇器時(shí)間選擇范圍限制的實(shí)現(xiàn)
- Element DateTimePicker日期時(shí)間選擇器的使用示例
- 詳解element-ui日期時(shí)間選擇器的日期格式化問題
相關(guān)文章
vuex數(shù)據(jù)持久化的兩種實(shí)現(xiàn)方案
在vuex的時(shí)候刷新以后里面存儲(chǔ)的state就會(huì)被瀏覽器釋放掉,因?yàn)槲覀兊膕tate都是存儲(chǔ)在內(nèi)存中的,所以一刷新頁(yè)面就會(huì)把state中的數(shù)據(jù)重置,這就涉及到vue數(shù)據(jù)持久化的問題,這篇文章主要給大家介紹了關(guān)于vuex數(shù)據(jù)持久化的兩種實(shí)現(xiàn)方案,需要的朋友可以參考下2021-07-07vite.config.ts配置之自動(dòng)導(dǎo)入element-puls方式
這篇文章主要介紹了vite.config.ts配置之自動(dòng)導(dǎo)入element-puls方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue安裝依賴npm install過程中報(bào)錯(cuò)npm ERR! cb() nev
這篇文章主要介紹了vue安裝依賴npm install過程中報(bào)錯(cuò)npm ERR! cb() never called!問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04詳解Vue3.0 前的 TypeScript 最佳入門實(shí)踐
這篇文章主要介紹了詳解Vue3.0 前的 TypeScript 最佳入門實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Vue.js使用this.$confirm換行顯示提示信息實(shí)例
在編寫Web應(yīng)用時(shí),實(shí)現(xiàn)多行文本顯示通常需要用到HTML標(biāo)簽或JavaScript特定函數(shù),本文介紹了如何使用JavaScript的$createElement函數(shù)來(lái)創(chuàng)建多行文本顯示,$createElement可以創(chuàng)建任何HTML標(biāo)簽,使得在JavaScript中控制HTML輸出更加靈活,通過簡(jiǎn)單的代碼示例2024-10-10vue項(xiàng)目部署到nginx/tomcat服務(wù)器的實(shí)現(xiàn)
這篇文章主要介紹了vue項(xiàng)目部署到nginx/tomcat服務(wù)器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Vue.js項(xiàng)目中管理每個(gè)頁(yè)面的頭部標(biāo)簽的兩種方法
這篇文章主要介紹了Vue.js項(xiàng)目中管理每個(gè)頁(yè)面的頭部標(biāo)簽的兩種方法,需要的朋友可以參考下2018-06-06