Vue3使用dayjs以及dayjs日期工具類詳解
說(shuō)明
這里記錄下在Vue3里面使用dayjs插件,以及將它在全局使用,并且將dayjs封裝成自己需要的日期工具類。
留待以后需要時(shí)直接使用。
安裝dayjs命令
npm install dayjs --save
在main.js里面全局導(dǎo)入
import { createApp } from 'vue'
import './style.css'
//引入element-plus
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
//引入dayjs日期插件
import dayjs from "dayjs"
import App from './App.vue'
const app = createApp(App)
//使用element-plus
app.use(ElementPlus)
//全局使用dayjs
app.config.globalProperties.$dayjs=dayjs
app.mount('#app')
在vue模版中使用dayjs語(yǔ)法
如下:
//使用dayjs將當(dāng)前時(shí)間轉(zhuǎn)換為指定樣式
this.$dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss")

瀏覽器結(jié)果如下:

dayjs日期工具類
在dateUtil.js里面局部使用dayjs,并將它封裝為自己的日期工具類。
//日期工具類
//局部導(dǎo)入dayjs
import dayjs from 'dayjs'
/**
* 校檢日期格式是否為YYYY-MM-DD這種格式
* @param date
* @returns {boolean}
*/
export function isValidDate(date) {
return dayjs(date,"YYYY-MM-DD",true).isValid()
}
/**
* 校檢日期格式是否為YYYY-MM-DD HH:mm:ss這種格式
* @param date
* @returns {boolean}
*/
export function isValidDateTime(date) {
return dayjs(date,"YYYY-MM-DD HH:mm:ss",true).isValid()
}
/**
* 獲取當(dāng)前日期年月日,時(shí)間格式為YYYY-MM-DD
* @returns {string}
*/
export function getCurrentDate() {
return dayjs(new Date()).format("YYYY-MM-DD")
}
/**
* 獲取當(dāng)前日期年月日時(shí)分秒,時(shí)間格式為YYYY-MM-DD HH:mm:ss(24小時(shí)制,如果hh為小寫表示為12小時(shí)制)
* @returns {string}
*/
export function getCurrentDateTime() {
return dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss")
}
/**
* 將傳過(guò)來(lái)的日期轉(zhuǎn)換為YYYY-MM-DD這種格式
* @param date:為傳過(guò)來(lái)的日期
* @returns {string}
*/
export function getConvertDate(date) {
return dayjs(date).format("YYYY-MM-DD")
}
/**
* 將傳過(guò)來(lái)的日期轉(zhuǎn)換為YYYY-MM-DD HH:mm:ss這種格式
* @param date:為傳過(guò)來(lái)的日期
* @returns {string}
*/
export function getConvertDateTime(date) {
return dayjs(date).format("YYYY-MM-DD HH:mm:ss")
}
/**
* 將傳過(guò)來(lái)的日期加X日期且時(shí)間格式為YYYY-MM-DD這種格式,如:getXAfterDate('2023-11-11',1,'day'),結(jié)果為2023-11-12
* @param date:為傳過(guò)來(lái)的日期
* @param num:在當(dāng)前日期加num,類型為int
* @param dateType:為要加的日期類型,有如下類型:'minute','hour','day','week','month','year'這六種類型
* @returns {string}
*/
export function getXAfterDate(date,num,dateType) {
return dayjs(date).add(num,dateType).format("YYYY-MM-DD")
}
/**
* 將傳過(guò)來(lái)的日期加X日期且時(shí)間格式為YYYY-MM-DD HH:mm:ss這種格式,如:getXAfterDateTime('2023-11-11 10:23:45',1,'day'),結(jié)果為2023-11-12 10:23:45
* @param date:為傳過(guò)來(lái)的日期
* @param num:在當(dāng)前日期加num,類型為int
* @param dateType:為要加的日期類型,有如下類型:'minute','hour','day','week','month','year'這六種類型
* @returns {string}
*/
export function getXAfterDateTime(date,num,dateType) {
return dayjs(date).add(num,dateType).format("YYYY-MM-DD HH:mm:ss")
}
/**
* 將傳過(guò)來(lái)的日期減去X日期且時(shí)間格式為YYYY-MM-DD這種格式,如:getXBeforeDate('2023-11-11',1,'day'),結(jié)果為2023-11-10
* @param date:為傳過(guò)來(lái)的日期
* @param num:在當(dāng)前日期加num,類型為int
* @param dateType:為要加的日期類型,有如下類型:'minute','hour','day','week','month','year'這六種類型
* @returns {string}
*/
export function getXBeforeDate(date,num,dateType) {
return dayjs(date).subtract(num,dateType).format("YYYY-MM-DD")
}
/**
* 將傳過(guò)來(lái)的日期減去X日期且時(shí)間格式為YYYY-MM-DD HH:mm:ss這種格式,如:getXBeforeDateTime('2023-11-11 10:23:45',1,'day'),結(jié)果為2023-11-10 10:23:45
* @param date:為傳過(guò)來(lái)的日期
* @param num:在當(dāng)前日期加day,類型為int
* @param dateType:為要加的日期類型,有如下類型:'minute','hour','day','week','month','year'這六種類型
* @returns {string}
*/
export function getXBeforeDateTime(date,num,dateType) {
return dayjs(date).subtract(num,dateType).format("YYYY-MM-DD HH:mm:ss")
}
/**
* 計(jì)算2個(gè)日期之間的差值
* @param startDate:開始日期
* @param endDate:結(jié)束日期,結(jié)束日期要比開始日期大
* @param dateType:日期類型,有如下類型:'minute','hour','day','week','month','year'這六種類型
* @returns {number}
*/
export function getDateDiff(startDate,endDate,dateType) {
return dayjs(endDate).diff(dayjs(startDate),dateType)
}
/**
* 判斷date1是否在date2之前,比如:date1:2023-01-01 13:30:23,date2:2022-12-01 13:30:23,結(jié)果為false
* @param date1
* @param date2
* @returns {boolean}
*/
export function isBefore(date1,date2) {
return dayjs(date1).isBefore(dayjs(date2))
}
/**
* 判斷date1是否在date2之后,比如:date1:2023-01-01 13:30:23,date2:2022-12-01 13:30:23,結(jié)果為true
* @param date1
* @param date2
* @returns {boolean}
*/
export function isAfter(date1,date2) {
return dayjs(date1).isAfter(dayjs(date2))
}
/**
* 判斷date1是否與date2相同,比如:date1:2023-01-01 13:30:23,date2:2022-12-01 13:30:23,結(jié)果為false
* @param date1
* @param date2
* @returns {boolean}
*/
export function isSame(date1,date2) {
return dayjs(date1).isSame(dayjs(date2))
}
/**
* 判斷date1是否等于或者在date2之前,比如:date1:2023-01-01 13:30:23,date2:2022-12-01 13:30:23,結(jié)果為false
* @param date1
* @param date2
* @returns {boolean}
*/
export function isSameOrBefore(date1,date2) {
return dayjs(date1).isSameOrBefore(dayjs(date2))
}
/**
* 判斷date1是否等于或者在date2之后,比如:date1:2023-01-01 13:30:23,date2:2022-12-01 13:30:23,結(jié)果為true
* @param date1
* @param date2
* @returns {boolean}
*/
export function isSameOrAfter(date1,date2) {
return dayjs(date1).isSameOrAfter(dayjs(date2))
}
/**
* 判斷betweenDate日期是否在startDate開始日期和endDate結(jié)束日期之間
* @param startDate:開始日期
* @param betweenDate:中間日期
* @param endDate:結(jié)束日期要比開始日期大
* @returns {boolean}
*/
export function isBetween(startDate,betweenDate,endDate) {
return dayjs(startDate).isBetween(betweenDate, dayjs(endDate))
}
/**
* 將傳過(guò)來(lái)的日期轉(zhuǎn)為當(dāng)年的1月1號(hào)或者當(dāng)月的1號(hào)或者當(dāng)周的周一
* @param date:傳過(guò)來(lái)日期
* @param dateType,日期類型,為:year,month,week這3種
* @returns {string}
*/
export function getEarlyDaysDate(date,dateType) {
return dayjs(date).startOf(dateType).format("YYYY-MM-DD")
}
/**
* 將傳過(guò)來(lái)的日期轉(zhuǎn)為當(dāng)年的12月31號(hào)或者當(dāng)月的最后一天或者當(dāng)周的周日
* @param date:傳過(guò)來(lái)日期
* @param dateType,日期類型,為:year,month,week這3種
* @returns {string}
*/
export function getLastDaysDate(date,dateType) {
return dayjs(date).endOf(dateType).format("YYYY-MM-DD")
}
/**
* 獲取2個(gè)日期之間的所有日期,包括開始日期和結(jié)束日期,如:getIntermediateDate('2023-12-01','2023-12-15',1,'day'))
* @param startDate:開始日期
* @param endDate:結(jié)束日期要大于開始日期
* @param num:在開始日期上加num,int類型,如果dateType為day,num為1那么就是在開始日期上加一天
* @param dateType,日期類型,類型如下:'minute','hour','day','week','month','year'這六種類型
* @returns {*[]}
*/
export function getIntermediateDate(startDate,endDate,num,dateType) {
//聲明一個(gè)數(shù)組用來(lái)存放所有日期,默認(rèn)把開始日期放進(jìn)數(shù)組里面,不然少一個(gè)開始日期數(shù)據(jù)
let daysArray=[startDate]
//判斷startDate是否在endDate之前
while (isBefore(startDate,endDate)){
//如果開始日期在結(jié)束日期之前,那么就將開始日期加num,并重新賦值給開始日期,不然會(huì)死循環(huán)
startDate = getXAfterDate(startDate,num,dateType)
//將計(jì)算后的日期放進(jìn)數(shù)組里面
daysArray.push(startDate)
}
return daysArray
}
這里隨便在工具類里面找?guī)讉€(gè)方法使用:

瀏覽器結(jié)果如下:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中使用refs定位dom出現(xiàn)undefined的解決方法
本篇文章主要介紹了vue中使用refs定位dom出現(xiàn)undefined的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
vue組件開發(fā)之用戶無(wú)限添加自定義填寫表單的方法
今天小編就為大家分享一篇vue組件開發(fā)之用戶無(wú)限添加自定義填寫表單的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
vue實(shí)現(xiàn)手機(jī)號(hào)碼的校驗(yàn)實(shí)例代碼(防抖函數(shù)的應(yīng)用場(chǎng)景)
這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)手機(jī)號(hào)碼的校驗(yàn)的相關(guān)資料,主要是防抖函數(shù)的應(yīng)用場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Vue實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)文字顯示懸浮框效果的示例代碼
這篇文章主要介紹了Vue實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)文字顯示懸浮框效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
詳解.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符
這篇文章主要介紹了詳解.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
el-table樹形表格中復(fù)選框聯(lián)動(dòng)功能操作大全
本文介紹了如何在el-table樹形表格中實(shí)現(xiàn)復(fù)選框聯(lián)動(dòng)功能,包括父級(jí)復(fù)選框控制子級(jí)復(fù)選框狀態(tài)以及子級(jí)復(fù)選框不可控制父級(jí)復(fù)選框狀態(tài)的功能,通過(guò)給表格數(shù)據(jù)添加標(biāo)識(shí)并編寫相應(yīng)的事件處理函數(shù),實(shí)現(xiàn)了這一功能,感興趣的朋友跟隨小編一起看看吧2026-01-01
使用Vue如何寫一個(gè)雙向數(shù)據(jù)綁定(面試常見)
這篇文章主要介紹了使用Vue如何寫一個(gè)雙向數(shù)據(jù)綁定,在前端面試過(guò)程中經(jīng)常會(huì)問(wèn)到,文中主要實(shí)現(xiàn)v-model,v-bind 和v-click三個(gè)命令,其他命令也可以自行補(bǔ)充。需要的朋友可以參考下2018-04-04
解決vue中無(wú)法動(dòng)態(tài)修改jqgrid組件 url地址的問(wèn)題
下面小編就為大家分享一篇解決vue中無(wú)法動(dòng)態(tài)修改jqgrid組件 url地址的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
vue.js源代碼core scedule.js學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了vue.js源代碼core scedule.js的學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
vue-quill-editor富文本編輯器超詳細(xì)入門使用步驟
vue中很多項(xiàng)目都需要用到富文本編輯器,在使用了ueditor和tinymce后,發(fā)現(xiàn)并不理想,所以果斷使用vue-quill-editor來(lái)實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于vue-quill-editor富文本編輯器入門使用步驟的相關(guān)資料,需要的朋友可以參考下2022-08-08

