vue v-for 获取了一个时间戳, 然后加过滤器, 变成了NaN-NaN-NaN,为什么?

问题描述

vue v-for 获取了一个时间戳, 然后加过滤器, 变成了NaN-NaN-NaN,不加过滤器,能够正常显示出来。这个什么原因

问题出现的环境背景及自己尝试过哪些方法

后台获取了一个数据,v-for循环显示出了 ws.craeateTime 是一个13位的毫秒数,formatDate是过滤器

图片描述
图片描述

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

<div  v-for=" ws in wmessage"  class="wmessageBoxTop">
    <div class="wmessageBoxTopleft"><p>警告</p></div>
    <ul class="wmessageBoxTopright">
        <li><p>未处理</p></li>
        <li class="wmessageBoxTopTime">
        <div><p>{{ws.createTime | formatDate}}</p><p>>>></p></div>
        </li>
    </ul>
</div>

选择器

filters: {
       formatDate: function (value) {
        var date = new Date(value);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
        var Y = date.getFullYear() + '-';
        var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
        var D = date.getDate() + ' ';
        var h = date.getHours() + ':';
        var m = date.getMinutes() + ':';
        var s = date.getSeconds();
        return Y+M+D+h+m+s;
      }
    },

你期待的结果是什么?实际看到的错误信息又是什么?

选择器应该没错,能正常时间


阅读 4.6k
4 个回答

是否是因为后台返回给你的是字符串,你要先把字符串转为数字

formatDate: function (value) {
    var val = JSON.parse(value)
    var date = new Date(val);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
    var Y = date.getFullYear() + '-';
    var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
    var D = date.getDate() + ' ';
    var h = date.getHours() + ':';
    var m = date.getMinutes() + ':';
    var s = date.getSeconds();
    return Y+M+D+h+m+s;
}

js的时间戳转化要求时间戳是10位把,JAVA的要求是13位,PHP要求10
你打印一下,你传入的值与转换的值

var date = new Date(parseInt(value));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题