vue如何使用moment js 格式化时间

www.jswusn.com JS 2025-05-22 09:54:58 8次浏览

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-DD2025-05-13
年-月-日
HH:mm:ss10:09:36
时:分:秒(24小时制)
YYYY年MM月DD日2025年05月13日
中文格式
MMM Do, YYYYMay 13th, 2025
英文格式(需设置本地化)
fromNow()3 days ago
相对当前时间(需设置本地化为英文)


1.5. 5. 注意事项

  1. 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 并实现灵活的时间格式化需求!

技术分享

苏南名片

  • 联系人:吴经理
  • 电话:152-1887-1916
  • 邮箱:message@jswusn.com
  • 地址:江苏省苏州市相城区

热门文章

Copyright © 2018-2025 jswusn.com 版权所有

技术支持:苏州网站建设  苏ICP备18036849号