为什么Moment格式化时间戳返回当前日期而非预期的指定日期?
错误原因
- 你传入的
1529416634是秒级Unix时间戳,moment默认接收的数字类型参数为毫秒级时间戳,二者相差1000倍,直接传入moment(value)时,会将1529416634毫秒转换为日期,对应的就是1970年的错误结果。 - 直接调用
Date(value)而非new Date(value)时,无论传入什么参数,Date()函数都会返回当前时间的字符串,所以第二种写法永远返回当前日期,和你传入的value无关。
修正方案
你可以选择两种方式修正过滤器:
- 方式一:使用moment专门处理秒级时间戳的
unix方法
Vue.filter("toDate", function (value) { if (value) { return moment.unix(value).format("yyyy-MM-DD HH:mm"); } });
- 方式二:手动将秒级时间戳转为毫秒级
Vue.filter("toDate", function (value) { if (value) { return moment(Number(value) * 1000).format("yyyy-MM-DD HH:mm"); } });
两种方式都可以正确将1529416634转换为你预期的2018-06-19 15:57。
内容的提问来源于stack exchange,提问作者JohnW2Smith
相关产品推荐
相关产品推荐

