1、月日时分秒补0函数
function addZero(time) {
let newTime = time > 9 ? time : '0' + time;
return newTime;
}
2、将毫秒时间转换为本地时间字符串,支持格式毫秒
function toLocaleStringByMs(timeStr) {
const time = {};
if (!timeStr) {
return '';
}
let date = new Date(timeStr);
time.y = date.getFullYear();
time.m = addZero(date.getMonth() + 1);
time.d = addZero(date.getDate());
time.h = addZero(date.getHours());
time.min = addZero(date.getMinutes());
time.s = addZero(date.getSeconds());
return `${time.y}-${time.m}-${time.d} ${time.h}:${time.min}:${time.s}`;
}
var t = +new Date()
toLocaleStringByMs(t)
3、校验时间格式
function valifyTime(time) {
const reg = /^\d{2}:\d{2}:\d{2}$/;
return reg.test(time);
}
4、判定两组时间序列是否存在重复
function isTimeContainTime(time1Arr, time2Arr) {
let timeArr;
let validate = true;
if (!Array.isArray(time1Arr) || !Array.isArray(time2Arr)) {
throw new Error('Please enter two array.');
}
if (time1Arr.length !== 2 || time2Arr.length !== 2) {
throw new Error('Please enter currect time.');
}
timeArr = [...time1Arr, ...time2Arr];
for (let time of timeArr) {
if (!valifyTime(time)) {
throw new Error('Please enter currect time.');
}
}
if (
(time2Arr[0] > time1Arr[0] && time2Arr[0] < time1Arr[1]) ||
(time2Arr[1] > time1Arr[0] && time2Arr[1] < time1Arr[1])
) {
validate = false;
}
if (
(time1Arr[0] > time2Arr[0] && time1Arr[0] < time2Arr[1]) ||
(time1Arr[1] > time2Arr[0] && time1Arr[1] < time2Arr[1])
) {
validate = false;
}
return validate;
}
5、将时间转换为UTC时间字符串,支持格式 hh:mm:ss
function toISOStringByTime(timeStr) {
const time = {};
let date = new Date(`2000/10/24 ${timeStr}`);
time.d = date.getUTCDate();
time.h = addZero(date.getUTCHours());
time.min = addZero(date.getUTCMinutes());
time.s = addZero(date.getUTCSeconds());
return {
offset: time.d - 24,
time: `${time.h}:${time.min}:${time.s}`
};
}
6、将时间转换为UTC时间字符串,支持格式 yyyy-mm-dd hh:mm:ss
function toISOStringByDate(timeStr, type = 'str') {
const time = {};
let newTime;
let date = new Date(timeStr.replace(/-/g, '/'));
time.y = date.getUTCFullYear();
time.m = addZero(date.getUTCMonth() + 1);
time.d = addZero(date.getUTCDate());
time.h = addZero(date.getUTCHours());
time.min = addZero(date.getUTCMinutes());
time.s = addZero(date.getUTCSeconds());
if (type === 'utcStr') {
newTime = `${time.y}${time.m}${time.d}T${time.h}${time.min}${time.s}Z`;
} else {
newTime = `${time.y}-${time.m}-${time.d} ${time.h}:${time.min}:${time.s}`;
}
return newTime;
}
7、将时间转换为UTC时间字符串
function toISOString(timeStr, type) {
try {
if (REG.DATE.test(timeStr)) {
return toISOStringByDate(timeStr, type);
} else if (REG.TIME.test(timeStr)) {
return toISOStringByTime(timeStr);
}
} catch (e) {
return '';
}
}
8、格式化时间
function dateFormat(date, format) {
let format1 = format;
var o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'H+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
'S+': date.getMilliseconds()
};
if (!format1) {
format1 = 'yyyy-MM-dd';
}
if (/(y+)/.test(format1)) {
format1 = format1.replace(
RegExp.$1,
(date.getFullYear() + '').substr(4 - RegExp.$1.length)
);
}
if (/(S+)/.test(format1)) {
format1 = format1.replace(
RegExp.$1,
(date.getMilliseconds() + '').substr(3 - RegExp.$1.length)
);
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(format1)) {
format1 = format1.replace(
RegExp.$1,
RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return format1;
}
9、将UTC时间转换为本地时间字符串,支持格式 hh:mm:ss
function toLocaleStringByTime(timeStr) {
const time = {};
let timeList = timeStr.split(':');
let utcDate = Date.UTC(2000, 10, 24, timeList[0], timeList[1], timeList[2]);
let date = new Date(utcDate);
time.d = date.getDate();
time.h = addZero(date.getHours());
time.min = addZero(date.getMinutes());
time.s = addZero(date.getSeconds());
return {
offset: time.d - 24,
time: `${time.h}:${time.min}:${time.s}`
};
}
10、将UTC时间转换为本地时间字符串
function toLocaleStringEx(timeStr) {
try {
if (REG.DATE.test(timeStr)) {
return toLocaleStringByDate(timeStr);
} else if (REG.TIME.test(timeStr)) {
return toLocaleStringByTime(timeStr);
} else if (REG.DATE_Z.test(timeStr)) {
let newTime = timeStr.replace(/[^0-9]/g, '');
let date = `${newTime.slice(0, 4)}-${newTime.slice(4, 6)}-${newTime.slice(6, 8)}`;
let time = `${newTime.slice(8, 10)}:${newTime.slice(10, 12)}:${newTime.slice(12, 14)}`;
return toLocaleStringByDate(`${date} ${time}`);
} else if (REG.DATE_M_D_Y.test(timeStr)) {
let newTime = timeStr.split(' ');
let dateList = newTime[0].split('-');
let time = newTime[1];
return toLocaleStringByDate(
`${dateList[2]}-${dateList[0]}-${dateList[1]} ${time}`,
'mmDDyy'
);
}
} catch (e) {
console.log('Please enter date as yyyy-mm-dd hh:mm:ss');
return '';
}
}
11、# 全局时间过滤器
获取日期对象,使用以下获取年月日时分秒的方法
使用padStart()方法用于时间补0,即不足2位用0补充
将时间进行格式拼接返回出来
Vue.filter('dateFormat', function (originVal) {
const dt = new Date(originVal)
const y = dt.getFullYear()
const m = (dt.getMonth() + 1 + '').padStart(2, '0')
const d = (dt.getDate() + '').padStart(2, '0')
const hh = (dt.getHours() + '').padStart(2, '0')
const mm = (dt.getMinutes() + '').padStart(2, '0')
const ss = (dt.getSeconds() + '').padStart(2, '0')
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
})
调用:
获取完时间数据后,调用dataFormat时间过滤器即可
{{scope.row.add_time | dateFormat}}