Vue中如何对时间进行格式化处理

1/10/2022 Vue

# vue2

# 步骤

  1. 原始时间数据为addtime,在数据addtime后面添加管道符|和全局过滤器dateFormat
{{ addtime | dateFormat }}
1
  1. main.js入口文件中定义全局过滤器 dateFormat
Vue.filter('dataFormat',(dtStr)=>{
	//返回一个日期对象
	const dt = new Date(dtStr)
	
	const y = dt.getFullYear()
	const m = padZero(dt.getMonth() + 1)
	const d = padZero(dt.getDate())

	const hh = padZero(dt.getHours())
	const mm = padZero(dt.getMinutes())
	const ss = padZero(dt.getSeconds())
	
	return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
})

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  1. 声明补零函数,为不足两位数的时间数据补零
function padZero(n){
	n > 9 ? n : '0' + n
}
1
2
3

# vue3

# 步骤

  1. assets/js/中声明一个FormatDate的函数,并导出
// 用于格式化时间

function formatDate(value, format) {
	//value: 需要格式化的数据
	//format: 指定格式 yyyy-MM-dd hh:mm:ss
	let date = new Date(value);
	
	// 获取年份
	let year = date.getFullYear();
	if (/(y+)/.test(format)) {
	
	// 获取匹配组的内容
	let content = RegExp.$1;
	format = format.replace(content, year.toString().slice(4 - content.length));
	}

	let o = {

	// y: date.getFullYear(), // 用这一句也行,但只适用于四位数显示时候用
		
		M: date.getMonth() + 1,
		
		d: date.getDate(),
		
		h: date.getHours(),
		
		m: date.getMinutes(),
		
		s: date.getSeconds()
	
	};

	for (let key in o) {
	
		// 构造动态正则
	
		let reg = new RegExp(`(${key}+)`);
	
		if (reg.test(format)) {
		
			// 获取匹配组的内容

			let content = RegExp.$1;
			
			let k = o[key] >= 10 ? o[key] : content.length == 2 ? '0' + o[key] : o[key];
			
			format = format.replace(content, k);
		
		}
	
	}

	return format;

}

export default formatDate

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
  1. 在使用组件页面中导入此js模块 import formatDate from '@/assets/js/FormatDate'
  2. 在使用组件的computed节点中调用此函数
computed:{

	formatDate(){
	
	return formatDate
	
	}

},

1
2
3
4
5
6
7
8
9
10
  1. 在需要渲染处使用计算属性
{{ formatDate(scope.row.addtime, "yyyy-mm-dd hh:MM:ss") }}

1
2
Last Updated: 3/6/2022, 10:19:54 AM