时间戳转换
/**
* 时间戳转换
* @param value 任意形式的时间字符串
* @returns {string} 格式化后的时间字符串
*/
export const fromData = function(value){
const date = new Date(value)
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
// 位数不够两位,前面加0
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
};
引入到需要转换的文件中,如果不能直接转换,需要循环用一下方法
1.this.tableData(表格带入的数组)
2. res.data.data 后端给的数组
3. lastFinishTime 里面的时间字段
this.tableData = res.data.data.map(item => {
item.lastFinishTime = fromData(item.lastFinishTime) // 可能需要 *1000看后端返回的数据
return item
})
使用方法时间戳转换:
//引入
import { fromData } from '../../../utils/util'
方式一
getSoftWareList(params = this.query) {
this.$API.omAPI.swAPI.getSwList(params).then(res => {
if (res.error === 0) {
this.total = res.data.total
this.softwareList = res.data.dataList.map(item => {
item.versionCode = fromData(item.versionCode * 1000) // 时间 乘以1000
return item
})
}
})
},
方式二
this.$API.songLibrary.getdownloadAlert(parmas).then(res => {
if (res.error === 0) {
this.tableData = res.data.data.map(item => {
item.lastFinishTime = fromData(item.lastFinishTime) // 时间 不乘以1000
return item
})
this.pageTotal = res.data.totalCount;
this.query.page = res.data.page;
} else {
this.$message.error('获取歌曲列表失败!');
}
}, res => {
this.$message.error('获取歌曲列表失败!');
});
节流函数
/**
* 节流函数
* @param func 需要节流执行的函数
* @param wait 节流时间
* @returns {function(...[*]=)} 闭包
*/
export const throttle = function (func, wait) {
var context, args;
var previous = 0;
return function() {
var now = +new Date();
context = this;
args = arguments;
if (now - previous > wait) {
func.apply(context, args);
previous = now;
}
}
};
数组降维
/**
* 数组扁平化(数组降维)
* arr<Array>: 需要被扁平化的数据
*/
export const flatArr = function (arr, attr) {
const stack = [...arr]; //保证不会破坏原数组
const result = [];
while (stack.length) {
const first = stack.shift();
if (Array.isArray(first[attr]) && first[attr].length) {
stack.unshift(...first[attr]);
}
result.push(first);
}
return result;
}
/**
* 获取上一个月
*
* @date 格式为yyyy-mm-dd的日期,如:2014-01-25
*/
function getPreMonth(date) {
var arr = date.split('-');
var year = arr[0]; //获取当前日期的年份
var month = arr[1]; //获取当前日期的月份
var day = arr[2]; //获取当前日期的日
var days = new Date(year, month, 0);
days = days.getDate(); //获取当前日期中月的天数
var year2 = year;
var month2 = parseInt(month) - 1;
if (month2 == 0) {
year2 = parseInt(year2) - 1;
month2 = 12;
}
var day2 = day;
var days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
}
var t2 = year2 + '-' + month2 + '-' + day2;
return t2;
}
/**
* 获取下一个月
*
* @date 格式为yyyy-mm-dd的日期,如:2014-01-25
*/
function getNextMonth(date) {
var arr = date.split('-');
var year = arr[0]; //获取当前日期的年份
var month = arr[1]; //获取当前日期的月份
var day = arr[2]; //获取当前日期的日
var days = new Date(year, month, 0);
days = days.getDate(); //获取当前日期中的月的天数
var year2 = year;
var month2 = parseInt(month) + 1;
if (month2 == 13) {
year2 = parseInt(year2) + 1;
month2 = 1;
}
var day2 = day;
var days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
}
var t2 = year2 + '-' + month2 + '-' + day2;
return t2;
}
获取当前月第一天
function getFirstDayOfMonth(){
var date = new Date();
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
return firstDay;
}
获取当月最后一天
function getLastDayOfMonth(){
var date = new Date();
var nextMonth = new Date(date.getFullYear(), date.getMonth()+1, 1);
var lastDay = new Date(nextMonth.getTime()-1000*60*60*24);
return lastDay;
}
根据当前时间获取本周一和周日的数据
// 获取周一到周末的日期
function getWeekTime (time) {
var now = time ? new Date(time) : new Date() //如果没传日期进来,就默认今天
var nowTime = now.getTime()
var day = now.getDay() || 7 //为周日的时候 day 修改为7 否则当天周天会有问题
var oneDayTime = 24 * 60 * 60 * 1000
var MondayTime = nowTime - (day - 1) * oneDayTime //显示周一
var SundayTime = nowTime + (7 - day) * oneDayTime //显示周日
//得到 传进来那天所在周的周一和周日
var date = new Date(MondayTime);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var date1 = new Date(SundayTime);
var year1 = date1.getFullYear();
var month1 = date1.getMonth() + 1;
var day1 = date1.getDate();
return {
MondayTime:`${[year, month, day].map(formatNumber).join('-')}`,
SundayTime:`${[year1, month1, day1].map(formatNumber).join('-')}`
}
}
获取上周一周日和下周一周日日期
// 获取下周日期
function nextlastWeek(date) {
//获取今天
let nowDate = date; //当天日期
//今天是本周的第几天
let nowDayOfWeek = nowDate.getDay();
//当前日
let nowDay = nowDate.getDate();
//当前月
let nowMonth = nowDate.getMonth();
//当前年
let nowYear = nowDate.getFullYear();
//获得上周的开始日期
let getUpWeekStartDate = formatDate(new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 8), 'Y-MM-dd');
//获得上周的结束日期
let getUpWeekEndDate = formatDate(new Date(nowYear, nowMonth, nowDay + (14- nowDayOfWeek)), 'Y-MM-dd');
return [getUpWeekStartDate, getUpWeekEndDate]
}
// 获取上周日期
function prelastWeek(date) {
//获取今天
let nowDate = date; //当天日期
//今天是本周的第几天
let nowDayOfWeek = nowDate.getDay();
//当前日
let nowDay = nowDate.getDate();
//当前月
let nowMonth = nowDate.getMonth();
//当前年
let nowYear = nowDate.getFullYear();
//获得上周的开始日期
let getUpWeekStartDate = formatDate(new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 6), 'Y-MM-dd');
//获得上周的结束日期
let getUpWeekEndDate = formatDate(new Date(nowYear, nowMonth, nowDay + (7 - nowDayOfWeek - 7)), 'Y-MM-dd');
return [getUpWeekStartDate, getUpWeekEndDate]
}
// 日期补0
function padLeftZero(str) {
return ('00' + str).substr(str.length);
}
// 日期格式化
function formatDate(data, fmt) {
data = new Date(data)
if (/(y+)/.test(fmt)) {
fmt = String(fmt).replace(RegExp.$1, (data.getFullYear() + '').substr(4 - RegExp.$1.length));
}
let o = {
'Y+': data.getFullYear(),
'M+': data.getMonth() + 1,
'd+': data.getDate(),
'h+': data.getHours(),
'm+': data.getMinutes(),
's+': data.getSeconds()
};
// 遍历这个对象
for (let k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
let str = o[k] + '';
fmt = String(fmt).replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
}
}
return fmt;
}