vue日期时间工具类详解
最近做的一个项目对日期时间的处理比较多,最后整理到一个工具类里面,方便以后使用:
1. 在utils文件夹下新建一个dateTimeUtil.js文件:
// 获取当前时间并格式化export function getCurrentTime(){var date = new Date()var month = date.getMonth() + 1var 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() + 1var 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() + 1var 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.htmlexport 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/82661063export 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// 获取距离周末的天数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//获取最后一周开始时间到周末的天数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// 获取距离周末的天数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 //获取最后一周开始时间到周末的天数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 = yearvar month = monthsmonth = month < 10 ? "0" + month: monthvar 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)
【vue日期时间工具类详解】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- Springboot与vue实例讲解实现前后端分离的人事管理系统
- 预测模型及优化|BP神经网络时间序列预测-附代码
- vue遮罩层如何阻止滚动
- vue|vue eslint报错:Component name “xxxxx“ should always be multi-word.eslintvue的4种解决方案
- vue请求接口并且携带token的实现
- 唇红齿白的少年
- 帝都旧事|帝都旧事 | 唯独时间疯狂前行,至少我曾刻骨铭心
- 那些还在说我是孩子的人
- 放弃无效社交,把时间浪费在美好的人和事上
- 从零开始搭建Vue2.0项目(一)之快速开始