vue日期时间工具类详解
作者:谈谈的心情 发布时间:2024-06-07 16:06:22
标签: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// 获取距离周末的天数 ? ?
? ? 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 = 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)
来源:https://blog.csdn.net/ljw124213/article/details/124297637


猜你喜欢
- 实现效果将位于/img目录下的1000张.png图片,转换成.webp格式,并存放于img_webp文件夹内。源图片目录目标图片目录关于批量
- 1. 使用性能分析器Golang提供了内置的性能分析工具 pprof,可以帮助您分析和优化应用程序的性能瓶颈。下面是使用 
- 本文代码需要正确安装Python扩展库pywin32,建议下载whl文件进行离线安装。然后调用win32api的ShellExecute()
- 我们也可以来做一个,但这个“定时器”的工作时间范围应控制在1个小时至100 毫秒之间: <%sub StartTi
- 在Linux上有个常用的命令 curl(非常好用),支持curl的就是大名鼎鼎的libcurl库;libcurl是功能强大的,而且是非常高效
- 1、准备工作pip install qcloudsms_py1.注册腾讯云账号2.在产品列表内找到短信,在短信内添加应用3.获取对应的SDK
- Fraction函数是python中实现分数的一个模块(module),模块是由别人写的,并且可以被拿来直接使用的代码程序,包括类、函数以及
- 本次分析基于 CPython 解释器,python3.x版本在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出
- pillowPillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。pillow可以说已经取代了PIL,将其
- 排序这个词,我的第一感觉是几乎所有App都有排序的地方,淘宝商品有按照购买时间的排序、B站的评论有按照热度排序的...对于MySQL,一说到
- 引言:在微信小程序里,比如商品展示页面的商品详情会有图片展示,PC端设置的商品详情是PC端的宽度,所以在小程序里图片会显示不全,这时就应该做
- 如何用python做后端写网页-flask框架 什么是Flask安装flask模块Hello World更深一步:数据绑定后端传入数据从前端
- php+lottery.js制作九宫格抽奖实例,本抽奖功能效果表现好,定制方便简单,新手学习跟直接拿来用都非常不错,兼容IE、火狐、谷歌等浏
- 本文实例为大家分享了JavaScript实现淘宝网图片的局部放大的具体代码,供大家参考,具体内容如下要实现的效果如下:<!DOCTYP
- 本文实例为大家分享了40行Python代码实现计算器功能,供大家参考,具体内容如下偶尔用脚本写点东西也是不错的。效果图代码from tkin
- 很多小伙伴在学习Django的时候,总是搞不定版本的问题,下面来一起看一张表,轻松解决Python版本和Django版本的兼容问题。Djan
- 资源React-16.8.*react-router-dom-4.3.*TypeScript-3.5.*webpack-4.*eslint-
- pygame创建游戏窗口界面,供大家参考,具体内容如下使用pygame前一定要先导入pygame而且肯定要先初始化pygameimport
- 本文实例讲述了python用来获得图片exif信息的库用法。分享给大家供大家参考。具体分析如下:exif-py是一个纯python实现的获取
- 我有个需求就是抓取一些简单的书籍信息存储到mysql数据库,例如,封面图片,书名,类型,作者,简历,出版社,语种。我比较之后,决定在亚马逊来