vue日期時間工具類詳解
更新時間:2022年06月24日 09:04:51 作者:談談的心情
這篇文章主要為大家詳細介紹了vue日期時間工具類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
最近做的一個項目對日期時間的處理比較多,最后整理到一個工具類里面,方便以后使用:
1. 在utils文件夾下新建一個dateTimeUtil.js文件:
// 獲取當前時間并格式化 export function getCurrentTime(){ ? var date = new Date() ? var month = date.getMonth() + 1 ? var day = date.getDate() ? if (month <= 9) { ? ? month = '0' + month ? } ? if (day <= 9) { ? ? day = '0' + day ? } ? return date.getFullYear() + '-' + month + '-' + day + ' ?' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds() } ? // 時間格式化 export function formatTime(v) { ? var date = new Date(v) ? var month = date.getMonth() + 1 ? var day = date.getDate() ? if (month <= 9) { ? ? month = '0' + month ? } ? if (day <= 9) { ? ? day = '0' + day ? } ? return date.getFullYear() + '-' + month + '-' + day + ' ?' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds() } ? // 日期格式化 export function formatDate(v) { ? var date = new Date(v) ? var month = date.getMonth() + 1 ? var day = date.getDate() ? if (month <= 9) { ? ? month = '0' + month ? } ? if (day <= 9) { ? ? day = '0' + day ? } ? return date.getFullYear() + '-' + month + '-' + day } ? // 獲取前、后n天 https://www.cnblogs.com/aoqizhonghua/p/11775982.html export function getRangeDate(num, time){ ? let n = num; ? let d = ''; ? if (time) { ? ? d = new Date(time); ? } else { ? ? d = new Date(); ? } ? let year = d.getFullYear(); ? let mon = d.getMonth() + 1; ? let day = d.getDate(); ? if(day <= n) { ? ? ? if(mon > 1) { ? ? ? ? ? mon = mon - 1; ? ? ? } else { ? ? ? ? ? year = year - 1; ? ? ? ? ? mon = 12; ? ? ? } ? } ? d.setDate(d.getDate() - n); ? year = d.getFullYear(); ? mon = d.getMonth() + 1; ? day = d.getDate(); ? let s = year + "-" + (mon < 10 ? ('0' + mon) : mon) + "-" + (day < 10 ? ('0' + day) : day); ? return s; } ? //獲取某個月的起始、終止日期 export function getMonthDate(y, m){ ? let start = new Date(y, m-1, 1) ? let year = start.getFullYear(); ? let mon = start.getMonth() + 1; ? let day = start.getDate(); ? let startDate = year + "-" + (mon < 10 ? ('0' + mon) : mon) + "-" + (day < 10 ? ('0' + day) : day) ? ? let end = new Date((new Date(y, m, 0).getTime() + 24*60*60*1000)-1) ? let year1 = end.getFullYear(); ? let mon1 = end.getMonth() + 1; ? let day1 = end.getDate(); ? let endDate = year1 + "-" + (mon1 < 10 ? ('0' + mon1) : mon1) + "-" + (day1 < 10 ? ('0' + day1) : day1) ? ? return startDate + ' —— ' + endDate } ? /* ? 當前日期是年的第幾周 ? date1是當前日期 ? date2是當年第一天 ? d是當前日期是今年第多少天 ? 用d + 當前年的第一天的周差距的和在除以7就是本年第幾周 */ export function getYearWeek(a, b, c){ ? var date1 = new Date(a, parseInt(b) - 1, c), ? ? ? date2 = new Date(a, 0, 1), ? ? ? d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000) ? ? ?? ? return Math.ceil((d + ((date2.getDay() + 1) - 1)) / 7) } ? // 計算某年某周的日期范圍 https://blog.csdn.net/lyhuo/article/details/82661063 export function weekGetDate(year, weeks){ ? var date = new Date(year, "0", "1") ? var time = date.getTime() // 獲取當前星期幾,0:星期一 ? ?? ? var _week = date.getDay() ? ?//當這一年的1月1日為周日時則本年有54周,否則沒有54周,沒有則去除第54周的提示 ? ? ? if(_week!=0){//一年53周情況 ? ? if(weeks==54){ ? ? ? return '-1' //今年沒有54周 ? ? } ? ? ? ? var cnt=0// 獲取距離周末的天數(shù) ? ? ? ? if(_week==0){ ? ? ? cnt = 7 ? ? ? }else if(_week==1){ ? ? ? cnt = 6 ? ? ? }else if(_week==2){ ?? ? ? ? cnt = 5 ? ? }else if(_week==3){ ?? ? ? ? cnt = 4 ? ? }else if(_week==4){ ? ? ? ? ? cnt = 3 ? ? }else if(_week==5){ ? ? ? ? ? cnt = 2 ? ? }else if(_week==6){ ? ? ? ? ? cnt = 1 ? ? } ? ? ? ? cnt += 1//加1表示以星期一為一周的第一天 ? ?// 將這個長整形時間加上第N周的時間偏移 ? ? ? ? time += cnt*24*3600000 //第2周開始時間? ? ? var nextYear = new Date(parseInt(year,10)+1,"0","1") ? ? ? var nextWeek = nextYear.getDay() ? ? var lastcnt = 0//獲取最后一周開始時間到周末的天數(shù) ? ? ? ? if(nextWeek==0){ ? ? ? ? ? lastcnt = 6 ? ? ? }else if(nextWeek==1){ ? ? ? ? ? lastcnt = 0? ? ? }else if(nextWeek==2){ ? ? ? ? ? lastcnt = 1? ? ? }else if(nextWeek==3){? ? ? ? lastcnt = 2? ? ? }else if(nextWeek==4){ ? ? ? ? ? lastcnt = 3? ? ? }else if(nextWeek==5){ ? ? ? ? ? lastcnt = 4? ? ? }else if(nextWeek==6){ ? ? ? ? ? lastcnt = 5 ? ? } ? ? ? ? if(weeks==1){//第1周特殊處理 ? ?// 為日期對象 date 重新設置成時間 time ? ? ? // var start = date.Format("yyyy-MM-dd"); ? ? ? var start = date.toLocaleDateString().split('/').join('-') ? ? ? date.setTime(time-24*3600000) ? ? ? var end = date.toLocaleDateString().split('/').join('-') ? ? ? return start + "-----" + end ? ? }else if(weeks==53){//第53周特殊處理 ? ? ? ? ? var start = time+(weeks-2)*7*24*3600000 //第53周開始時間 ? ? ? ? ? var end = time+(weeks-2)*7*24*3600000 + lastcnt*24*3600000 - 24*3600000 //第53周結束時間 ? ? ? date.setTime(start) ? ? ? // var _start = date.Format("yyyy-MM-dd"); ? ? ? var _start = date.toLocaleDateString().split('/').join('-') ? ? ? date.setTime(end) ? ? ? // var _end = date.Format("yyyy-MM-dd"); ? ? ? var _end = date.toLocaleDateString().split('/').join('-') ? ? ? return _start + "---" ?+ _end ? ? }else{ ? ? ? ? ? var start = time+(weeks-2)*7*24*3600000 //第n周開始時間 ? ? ? ? ? var end = time+(weeks-1)*7*24*3600000 - 24*3600000 //第n周結束時間 ? ? ? date.setTime(start) ? ? ? // var _start = date.Format("yyyy-MM-dd"); ? ? ? var _start = date.toLocaleDateString().split('/').join('-') ? ? ? date.setTime(end) ? ? ? // var _end = date.Format("yyyy-MM-dd"); ? ? ? var _end = date.toLocaleDateString().split('/').join('-') ? ? ? return _start + "---" ?+ _end ? ? }? ? }else{//一年54周情況 ? ? ? ? var cnt=0// 獲取距離周末的天數(shù) ? ? ? ? if(_week==0 && weeks==1){//第一周 ? ? ? ? ? cnt = 0 ? ? ? }else if(_week==0){ ? ? ? ? ? cnt = 7? ? ? }else if(_week==1){ ? ? ? ? ? cnt = 6 ?? ? ? }else if(_week==2){ ? ? ? ? ? cnt = 5? ? ? }else if(_week==3){ ? ? ? ? ? cnt = 4 ? ? ? }else if(_week==4){ ? ? ? ? ? cnt = 3 ? ? }else if(_week==5){ ? ? ? ? ? cnt = 2 ? ? ? }else if(_week==6){ ? ? ? ? ? cnt = 1 ? ? ? } ? ? ? ? cnt += 1//加1表示以星期一為一周的第一天 ? ? ? ? // 將這個長整形時間加上第N周的時間偏移 ? ? ? ? time += 24*3600000 //第2周開始時間 ? ? ? ? var nextYear = new Date(parseInt(year,10)+1,"0","1") ?? ? ? var nextWeek = nextYear.getDay() ?? ? ? var lastcnt = 0 //獲取最后一周開始時間到周末的天數(shù) ? ? ? ? if(nextWeek==0){ ? ? ? ? ? lastcnt = 6 ? ? }else if(nextWeek==1){ ? ? ? ? ? lastcnt = 0 ? ? ? ? }else if(nextWeek==2){? ? ? ? lastcnt = 1 ? ? }else if(nextWeek==3){ ? ? ? ? ? lastcnt = 2 ? ? }else if(nextWeek==4){ ? ? ? ? ? lastcnt = 3 ?? ? ? }else if(nextWeek==5){ ? ? ? ? ? lastcnt = 4 ?? ? ? }else if(nextWeek==6){ ? ? ? ? ? lastcnt = 5? ? ? } ? ? ? ? if(weeks==1){//第1周特殊處理 ? ? ? // var start = date.Format("yyyy-MM-dd"); ? ? ? var start = date.toLocaleDateString().split('/').join('-') ? ? ? date.setTime(time-24*3600000) ? ? ? alert(start +'--'+ date) ? ? ? return _start + "---" ?+ date ? ? }else if(weeks==54){//第54周特殊處理 ? ? ? ? ? var start = time+(weeks-2)*7*24*3600000 //第54周開始時間 ? ? ? ? ? var end = time+(weeks-2)*7*24*3600000 + lastcnt*24*3600000 - 24*3600000 //第53周結束時間 ? ? ? date.setTime(start) ? ? ? // var _start = date.Format("yyyy-MM-dd");? ? ? ? var _start = date.toLocaleDateString().split('/').join('-') ? ? ? date.setTime(end) ? ? ? // var _end = date.Format("yyyy-MM-dd"); ? ? ? var _end = date.toLocaleDateString().split('/').join('-') ? ? ? return _start + "---" ?+ _end ? ? }else{ ? ? ? ? ? var start = time+(weeks-2)*7*24*3600000 //第n周開始時間 ? ? ? ? ? var end = time+(weeks-1)*7*24*3600000 - 24*3600000 //第n周結束時間 ? ? ? date.setTime(start) ? ? ? // var _start = date.Format("yyyy-MM-dd"); ? ? ? var _start = date.toLocaleDateString().split('/').join('-') ? ? ? date.setTime(end) ? ? ? // var _end = date.Format("yyyy-MM-dd"); ? ? ? var _end = date.toLocaleDateString().split('/').join('-') ? ? ? return _start + "---" ?+ _end ? ? } ? ? ? } ? ? } ? // 計算某年某月的日期范圍 export function monthGetDate(year, months) { ? var year = year ? var month = months ? month = month < 10 ? "0" + month: month ? var firstday = year + "-" + month + "-" + "01" ? var lastday = "" ? if (month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") { ? ? lastday = year + "-" + month + "-" + 31 ? } else if (month == "02") { ? ? if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)) { ? ? ? lastday = year + "-" + month + "-" + 29 ? ? } else { ? ? ? lastday = year + "-" + month + "-" + 28 ? ? } ? } else { ? ? lastday = year + "-" + month + "-" + 30 ? } ? return firstday + '---' + lastday } ? //生成隨機字符串方法 export function getString() { ? let time = new Date() ? time = time.getTime() ? ? return `${Math.random().toString(36).substr(2, 10)}${time}` } ? //升序排序 export function bubbleSortUp(arr, flag) { ? for (var i = 0; i < arr.length; i++) { ? ? for (var j = 0; j < arr.length - i - 1; j++) { ? ? ? if (arr[j][flag] > arr[j + 1][flag]) { ? ? ? ? var c = arr[j]; ? ? ? ? arr[j] = arr[j + 1]; ? ? ? ? arr[j + 1] = c; ? ? ? } ? ? } ? } ? ? return arr; } ? //降序排序 export function bubbleSortDown(arr, flag) { ? for (var i = 0; i < arr.length; i++) { ? ? for (var j = 0; j < arr.length - i - 1; j++) { ? ? ? if (arr[j][flag] < arr[j + 1][flag]) { ? ? ? ? var c = arr[j + 1]; ? ? ? ? arr[j + 1] = arr[j]; ? ? ? ? arr[j] = c; ? ? ? } ? ? } ? } ? ? return arr; } ? //減法精度處理 export function floatSub(arg1, arg2) { ? var r1, r2, m, n; ? try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } ? try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } ? m = Math.pow(10, Math.max(r1, r2)); ? n = (r1 >= r2) ? r1 : r2; ? ? return ((arg1 * m - arg2 * m) / m).toFixed(n); }
2. 在需要的文件中引入使用:
獲取七天前的日期:
let day7 = util.getRangeDate(7)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
vue項目使用axios發(fā)送請求讓ajax請求頭部攜帶cookie的方法
今天小編就為大家分享一篇vue項目使用axios發(fā)送請求讓ajax請求頭部攜帶cookie的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09el-input寬度跟隨輸入內(nèi)容自適應的實現(xiàn)方法
這篇文章主要給大家介紹了關于el-input寬度跟隨輸入內(nèi)容自適應的實現(xiàn)方法,我們再實際應用中可能需要input文本框能夠根據(jù)輸入字符的所占據(jù)的寬度自動調節(jié)尺寸,需要的朋友可以參考下2023-08-08vue?elementui二次封裝el-table帶插槽問題
這篇文章主要介紹了vue?elementui二次封裝el-table帶插槽問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08在axios中使用params傳參的時候傳入數(shù)組的方法
今天小編就為大家分享一篇在axios中使用params傳參的時候傳入數(shù)組的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09