vue 日期过滤器

这篇博客介绍了在Vue.js中创建全局日期过滤器的方法,用于格式化日期显示。提供了两种不同的实现方式,一种是直接在过滤器中处理日期格式,另一种是通过传入自定义格式参数来实现。示例代码展示了如何将日期转换为'yyyy-MM-dd'格式。

@vue 日期过滤器

/*
全局时间过滤器
使用方法 e.g {{ [item.EntityEndTime,‘yyyy-MM-dd’] | Date}}
*/
Vue.filter(‘Date’, (item) => {
const oDate = new Date(item[0]);
const o = {
‘M+’: oDate.getMonth() + 1, // 月份
‘d+’: oDate.getDate(), // 日
‘h+’: oDate.getHours(), // 小时
‘m+’: oDate.getMinutes(), // 分
‘s+’: oDate.getSeconds(), // 秒
‘q+’: Math.floor((oDate.getMonth() + 3) / 3), // 季度
S: oDate.getMilliseconds(), // 毫秒
};
// eslint-disable-next-line no-restricted-syntax
if (/(y+)/.test(item[1])) { item[1] = item[1].replace(RegExp.1,(‘1, (`1,({oDate.getFullYear()}).substr(4 - RegExp.$1.length)); } for (const k in o) { if (new RegExp((${k})).test(item[1])) item[1] = item[1].replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : ((00o[k]‘).substr((‘{o[k]}`).substr((`o[k]).substr(({o[k]}`).length))); }
return item[1];
});

第二种 :

使用 :/** {{item.dataTime | dateFormat(‘yyyy-MM-dd’)}} */
Vue.filter(‘dateFormat’, function(originVal,fmt) {
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’)

/*可以自己设置/
if(fmt === ‘yyyy-MM-dd’){
return ${y}-${m}-${d}
}

return ${y}-${m}-${d} ${hh}:${mm}:${ss}
})

### Vue.js 时间日期过滤器的实现与用法 在 Vue.js 中,时间日期过滤器可以用来格式化显示的时间或日期数据。通过自定义过滤器,开发者可以根据项目需求灵活地调整时间日期的展示形式。 #### 自定义时间日期过滤器 Vue.js 支持创建自定义过滤器来处理特定的数据格式化逻辑。以下是基于 JavaScript 原生 `Date` 对象的方法实现一个简单的时间日期过滤器: ```javascript // 定义全局过滤器 Vue.filter('formatDate', (value) => { if (!value) return ''; // 如果输入为空,则返回空字符串 const date = new Date(value); // 将传入的值转换为日期对象 const year = date.getFullYear(); // 获取年份 const month = String(date.getMonth() + 1).padStart(2, '0'); // 获取月份并补零 const day = String(date.getDate()).padStart(2, '0'); // 获取日并补零 return `${year}-${month}-${day}`; // 返回格式化的日期字符串 }); ``` 此代码实现了将 ISO 字符串或其他有效的日期表示形式转化为 `YYYY-MM-DD` 格式的功能[^1]。 #### 使用时间日期过滤器 一旦定义了过滤器,在模板中就可以轻松使用它。下面是一个简单的例子展示了如何利用该过滤器: ```html <div id="app"> 当前时间为:{{ currentDate | formatDate }} </div> <script> new Vue({ el: '#app', data: { currentDate: new Date().toISOString(), // 设置当前时间为ISO格式 } }); </script> ``` 在这个实例里,`currentDate` 被绑定到了 Vue 实例中的数据属性,并通过管道符号 (`|`) 应用了名为 `formatDate` 的过滤器[^4]。 #### 双向过滤器(已废弃) 需要注意的是,虽然早期版本的 Vue.js 提供了双向过滤器的功能,但在 Vue 2.x 版本之后已经被移除,官方建议改用计算属性或者方法来进行更复杂的操作[^3]。 #### 替代方案——计算属性 如果需要更加复杂的时间处理逻辑,推荐采用计算属性代替过滤器的方式。例如: ```javascript computed: { formattedDate() { let date = new Date(this.currentDate); let options = { year: 'numeric', month: 'long', day: 'numeric' }; return date.toLocaleDateString(undefined, options); } } ``` 这样不仅可以增强代码可读性和维护性,还能够充分利用 Vue 的响应式机制[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值