最近做的一个项目对日期时间的处理比较多,最后整理到一个工具类里面,方便以后使用:
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
}
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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。