创建一个简单的vue时间过滤方法

117 阅读1分钟

使用vue去显示时间时,常常需要对获取到的时间数据进行处理显示,这里可以使用filters过滤器的方法来进行

比如:需要显示获取到的时间与当前时间做对比,显示今天昨天前天,更早之前的时间可以显示为需要的时间格式

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
		<style type="text/css">
			#timeFilter li{
				list-style: none;
				margin: 5px 0px;
				background-color: ghostwhite;
			}
			#timeFilter li:nth-child(2n){
				background-color: gold;
			}
		</style>
		<title></title>
	</head>
	<body>
		<div id="timeFilter">
			<div>现在时间:{{ nowtime }} </div>
			<ul>
				<li v-for="(item,index) in timeArr">这一次的时间是:{{ item.start }} --- {{ item.start | dateFormat01 }}</li>
			</ul>
		</div>
		<script type="text/javascript">
			var timeFilter = new Vue({
				el: "#timeFilter",
				data: {
					timeArr: [{
							start: '2017-8-9 11:12:15'
						}, {
							start: '2020-9-20 23:10:10'
						},
						{
							start: '2020-3-15 07:04:12'
						}, {
							start: '2020-9-19 04:50:12'
						},
						{
							start: '2020-9-21 17:10:01'
						}, {
							start: '2019-10-1 01:01:01'
						}
					],
					nowtime:new Date()
				},
				methods: {},
				filters: {
					dateFormat01: function(str) {
						var datestr = str.replace(/-/g, "/").replace(/T/g, " ");
						// 发布时间
						var dt = new Date(datestr);
						// 当前时间
						var dl = new Date();
						var dly = dl.getFullYear();
						var dlm = dl.getMonth();
						var dld = dl.getDate();
						// 获取当天零点的时间
						var zerodl = new Date(dly, dlm, dld, 0, 0, 0);
						var dateInterval1 = (dl - dt) / 1000 / 60 / 60 / 24;

						//判断发布时间与现在时间
						// 如果在同一天
						if (dt.getDate() == dld && dateInterval1 < 1) {
							var showday1 = "今天";
						} else {
							var dateInterval2 = (zerodl - dt) / 1000 / 60 / 60 / 24;

							if (dateInterval2 <= 1) {
								var showday1 = "昨天";
							} else if (dateInterval2 > 1 && dateInterval2 <= 2) {
								var showday1 = "前天";
							} else {
								var showday1 = dt.getFullYear() + "/" + (dt.getMonth() + 1) + "/" + dt.getDate();
							}
						}
						var fn = function(str) {
							if (str < 10) {
								str = "0" + str;
								return str
							} else {
								return str
							}
						}
						return showday1 + " " + fn(dt.getHours()) + ":" + fn(dt.getMinutes());
					}
				}
			})
		</script>
	</body>
</html>