Vue3使用dayjs以及dayjs日期工具類(lèi)詳解
說(shuō)明
這里記錄下在Vue3里面使用dayjs插件,以及將它在全局使用,并且將dayjs封裝成自己需要的日期工具類(lèi)。
留待以后需要時(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日期工具類(lèi)
在dateUtil.js里面局部使用dayjs,并將它封裝為自己的日期工具類(lèi)。
//日期工具類(lèi) //局部導(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為小寫(xiě)表示為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(jué)日期且時(shí)間格式為YYYY-MM-DD這種格式,如:getXAfterDate('2023-11-11',1,'day'),結(jié)果為2023-11-12 * @param date:為傳過(guò)來(lái)的日期 * @param num:在當(dāng)前日期加num,類(lèi)型為int * @param dateType:為要加的日期類(lèi)型,有如下類(lèi)型:'minute','hour','day','week','month','year'這六種類(lèi)型 * @returns {string} */ export function getXAfterDate(date,num,dateType) { return dayjs(date).add(num,dateType).format("YYYY-MM-DD") } /** * 將傳過(guò)來(lái)的日期加X(jué)日期且時(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,類(lèi)型為int * @param dateType:為要加的日期類(lèi)型,有如下類(lèi)型:'minute','hour','day','week','month','year'這六種類(lèi)型 * @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,類(lèi)型為int * @param dateType:為要加的日期類(lèi)型,有如下類(lèi)型:'minute','hour','day','week','month','year'這六種類(lèi)型 * @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,類(lèi)型為int * @param dateType:為要加的日期類(lèi)型,有如下類(lèi)型:'minute','hour','day','week','month','year'這六種類(lèi)型 * @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:開(kāi)始日期 * @param endDate:結(jié)束日期,結(jié)束日期要比開(kāi)始日期大 * @param dateType:日期類(lèi)型,有如下類(lèi)型:'minute','hour','day','week','month','year'這六種類(lèi)型 * @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開(kāi)始日期和endDate結(jié)束日期之間 * @param startDate:開(kāi)始日期 * @param betweenDate:中間日期 * @param endDate:結(jié)束日期要比開(kāi)始日期大 * @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,日期類(lèi)型,為: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,日期類(lèi)型,為:year,month,week這3種 * @returns {string} */ export function getLastDaysDate(date,dateType) { return dayjs(date).endOf(dateType).format("YYYY-MM-DD") } /** * 獲取2個(gè)日期之間的所有日期,包括開(kāi)始日期和結(jié)束日期,如:getIntermediateDate('2023-12-01','2023-12-15',1,'day')) * @param startDate:開(kāi)始日期 * @param endDate:結(jié)束日期要大于開(kāi)始日期 * @param num:在開(kāi)始日期上加num,int類(lèi)型,如果dateType為day,num為1那么就是在開(kāi)始日期上加一天 * @param dateType,日期類(lèi)型,類(lèi)型如下:'minute','hour','day','week','month','year'這六種類(lèi)型 * @returns {*[]} */ export function getIntermediateDate(startDate,endDate,num,dateType) { //聲明一個(gè)數(shù)組用來(lái)存放所有日期,默認(rèn)把開(kāi)始日期放進(jìn)數(shù)組里面,不然少一個(gè)開(kāi)始日期數(shù)據(jù) let daysArray=[startDate] //判斷startDate是否在endDate之前 while (isBefore(startDate,endDate)){ //如果開(kāi)始日期在結(jié)束日期之前,那么就將開(kāi)始日期加num,并重新賦值給開(kāi)始日期,不然會(huì)死循環(huán) startDate = getXAfterDate(startDate,num,dateType) //將計(jì)算后的日期放進(jìn)數(shù)組里面 daysArray.push(startDate) } return daysArray }
這里隨便在工具類(lèi)里面找?guī)讉€(gè)方法使用:
瀏覽器結(jié)果如下:
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue生產(chǎn)環(huán)境調(diào)試的方法步驟
開(kāi)發(fā)環(huán)境下Vue會(huì)提供很多警告來(lái)幫你對(duì)付常見(jiàn)的錯(cuò)誤與陷阱,而在生產(chǎn)環(huán)境下,這些警告語(yǔ)句卻沒(méi)有用,反而會(huì)增加應(yīng)用的體積,下面這篇文章主要給大家介紹了關(guān)于Vue生產(chǎn)環(huán)境調(diào)試的方法步驟,需要的朋友可以參考下2022-04-04如何使用 vue-cli 創(chuàng)建模板項(xiàng)目
這篇文章主要介紹了如何使用 vue-cli 創(chuàng)建模板項(xiàng)目,幫助大家更好的理解和學(xué)習(xí)vue框架的知識(shí),感興趣的朋友可以了解下2020-11-11vue+vant-UI框架實(shí)現(xiàn)購(gòu)物車(chē)的復(fù)選框全選和反選功能
這篇文章主要介紹了vue+vant-UI框架實(shí)現(xiàn)購(gòu)物車(chē)的復(fù)選框全選和反選功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11Vue使用xlsx插件導(dǎo)出excel文件的詳細(xì)指南
第三方庫(kù)xlsx提供了強(qiáng)大的功能來(lái)處理Excel文件,它可以簡(jiǎn)化導(dǎo)出Excel文件這個(gè)過(guò)程,下面小編就來(lái)為大家詳細(xì)講講Vue如何通過(guò)xlsx導(dǎo)出excel,需要的小伙伴可以了解下2025-04-04VUE對(duì)Storage的過(guò)期時(shí)間設(shè)置,及增刪改查方式
這篇文章主要介紹了VUE對(duì)Storage的過(guò)期時(shí)間設(shè)置,及增刪改查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02解決vue3項(xiàng)目中el-menu不兼容SSR問(wèn)題
這篇文章主要介紹了解決vue3項(xiàng)目中el-menu不兼容SSR問(wèn)題,需要的朋友可以參考下2023-12-12uniapp-ios開(kāi)發(fā)之App端與webview端相互通信的方法以及注意事項(xiàng)
在uni-app與Webview之間進(jìn)行數(shù)據(jù)交互是非常常見(jiàn)的需求,下面這篇文章主要給大家介紹了關(guān)于uniapp-ios開(kāi)發(fā)之App端與webview端相互通信的方法以及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2024-07-07