filters.js
2.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/**
* @file vue 全局过滤器
*/
import Vue from 'vue'
/**
* 时间格式化
* @param {Number|String} time - 时间戳或字符串
* @param {String} format - 时间格式:'YYYY-MM-DD hh:mm:ss'(默认值)
* @param {Boolean} simplify - 是否简化时间格式
*/
Vue.filter('adFormatTime', function (time, format = 'YYYY-MM-DD hh:mm:ss', simplify) {
if (typeof time == 'string' && time.indexOf('T') === -1) { //排除格林威治时间
time = time.replace(/-/g, '/')
}
if (String(time).length < 11) {
time += '000';
}
let date = new Date(Number(time));
// #region 简化时间格式,最多 7 天
if (simplify) {
let result = ''
let difference = Date.now() - date.getTime()
if (difference < 60000) {
result = '刚刚'
} else if (difference < 3600000) {
result = parseInt(difference / 60000) + ' 分钟前'
} else if (difference < 86400000) {
result = parseInt(difference / 3600000) + ' 小时前'
} else if (difference < 604800000) {
result = parseInt(difference / 86400000) + ' 天前'
}
if (result) {
return result
}
}
// #endregion
const patterns = {
'M+': date.getMonth() + 1,
'D+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds()
}
if (/Y+/.test(format)) {
format = format.replace(RegExp.lastMatch, (date.getFullYear() + '').slice(4 - RegExp.lastMatch.length))
}
for (let p in patterns) {
if (new RegExp('(' + p + ')').test(format)) {
format = format.replace(RegExp.lastMatch, RegExp.lastMatch.length == 1 ? patterns[p] : String(patterns[p]).padStart(2, '0'))
}
}
return format
})
/**
* 数字格式化
* @param {Number} num - 待格式化的数字
*/
Vue.filter('adFormatNumber', function (num) {
if (typeof num == 'undefined') {
return ''
}
let result = num.toString()
if (num > 100000000) {
result = (num / 100000000).toFixed(1) + '亿'
} else if (num > 10000) {
result = (num / 10000).toFixed(1) + '万'
}
return result
})