
1. vue如何使用moment js 格式化时间
在 Vue 2 中使用 Moment.js 格式化时间,可以按照以下步骤进行操作:
1.1. 1. 安装 Moment.js
首先,通过 npm 或 yarn 安装 Moment.js:
npm install moment --save # 或 yarn add moment
1.2. 2. 在 main.js 中全局挂载 Moment.js
为了在所有组件中方便地使用 Moment.js,可以将其挂载到 Vue 的原型链上。同时,如果需要显示中文格式(如“今天”、“昨天”),可以设置本地化配置。
// main.js
importVuefrom'vue'
import moment from'moment'
// 挂载到 Vue 原型链上
Vue.prototype.$moment = moment
// 设置中文本地化(可选)
moment.locale('zh-cn')
// 全局过滤器(可选)
Vue.filter('dataFormat', function (dataStr, pattern = "YYYY-MM-DD HH:mm:ss") {
returnmoment(dataStr).format(pattern)
})
newVue({
// ...
}).$mount('#app')1.3. 3. 在组件中使用 Moment.js
1.3.1. 方法一:通过全局过滤器
在模板中使用过滤器格式化时间:
<template>
<div>
<!-- 直接使用过滤器 -->
<p>{{ item.add_time | dataFormat('YYYY-MM-DD') }}</p>
</div>
</template>1.3.2. 方法二:在方法或计算属性中直接调用
在组件的 methods 或 computed 中使用 $moment:
<template>
<div>
<p>{{ formattedDate }}</p>
</div>
</template>
<script>
export default {
data() {
return {
timestamp: '2025-05-13T10:09:36Z'// 示例时间戳
}
},
computed: {
formattedDate() {
// 格式化为指定格式
returnthis.$moment(this.timestamp).format('YYYY年MM月DD日 HH:mm:ss')
},
relativeTime() {
// 显示相对时间(如“3天前”)
returnthis.$moment(this.timestamp).fromNow()
}
}
}
</script>1.4. 4. 常见格式化示例
Moment.js 提供了丰富的格式化选项,以下是一些常见用法:
YYYY-MM-DD | 2025-05-13 | |
HH:mm:ss | 10:09:36 | |
YYYY年MM月DD日 | 2025年05月13日 | |
MMM Do, YYYY | May 13th, 2025 | |
fromNow() | 3 days ago |
1.5. 5. 注意事项
1. 本地化配置: • 如果需要显示中文格式(如“今天”、“昨天”),需在挂载时设置本地化:
moment.locale('zh-cn')• 如果需要英文格式(如 3 days ago),则设置:
moment.locale('en')2. 性能优化: • Moment.js 是一个功能强大的库,但体积较大。如果仅需简单格式化,可以考虑使用更轻量的替代库(如 day.js)。 3. 时区处理: • Moment.js 默认使用本地时区。如果需要处理 UTC 时间,可以使用 moment.utc():
this.$moment.utc('2025-05-13T10:09:36Z').format('YYYY-MM-DD HH:mm:ss')1.6. 6. 完整示例代码
1.6.1. main.js
import Vuefrom'vue'
importAppfrom'./App.vue'
import moment from'moment'
// 挂载到 Vue 原型链上
Vue.prototype.$moment = moment
// 设置中文本地化
moment.locale('zh-cn')
// 全局过滤器
Vue.filter('dataFormat', function (dataStr, pattern = "YYYY-MM-DD HH:mm:ss") {
returnmoment(dataStr).format(pattern)
})
newVue({
render: h =>h(App),
}).$mount('#app')1.6.2. 组件示例
<template>
<div>
<p>格式化时间:{{ item.add_time | dataFormat('YYYY年MM月DD日') }}</p>
<p>相对时间:{{ relativeTime }}</p>
</div>
</template>
<script>
export default {
data() {
return {
item: {
add_time: '2025-05-13T10:09:36Z'
}
}
},
computed: {
relativeTime() {
returnthis.$moment(this.item.add_time).fromNow()
}
}
}
</script>通过以上步骤,你可以在 Vue 2 项目中轻松集成 Moment.js 并实现灵活的时间格式化需求!










