vue过滤器中使用moment.js初始化时间戳

  1. vue项目中下载moment依赖

npm install moment --save
  1. main.js引入moment,过滤器中定义初始化日期方法

import moment from 'moment'
// 全局定义一个初始化日期的方法
Vue.filter('dateFormat', originVal => {
  return moment(parseInt(originVal) * 1000).format('YYYY MM DD')
})

3.vue文件中使用该方法

<span class="time">{{ yourTime(时间戳) | dateFormat }}</span>

补充: 过滤器可以多层使用。上一次过滤的结果作下一次过滤的第一个参数.下方小例子(局部过滤)

//视图
<h1>{{msg | uppercase | slice(2, 10)}}</h1>
//逻辑
let app = new Vue({
    // 绑定视图
    el: '#app',
    // 绑定数据
    data: {
        msg: 'abc_def-Ghi_jkm',
    },
    // 局部过滤器
    filters: {
        uppercase(str) {
            // console.log(this, arguments)
            return str.toUpperCase();
        },
        // args即(2, 10)
        slice(str, ...args) {
            return str.slice(...args);
        }
    }
})

自己实现

注:padstart,字符串方法。
第一个参数指定目标位数
第二个参数指定在字符串前添加的字符
在下边代码中,在不足两位的数字前补'0'。如6补为'06'

Vue.filter('dateFormat', originVal => {
  const dt = new Date(originVal * 1000 )
  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')
  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
})

// 补0还有一个巧妙方法
function padLeftZero(str) {
  return  ('00' + str).substr(str.length)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容