如何在vue组件中将格式日期时间更改为日期?

时间:2018-04-02 23:09:08

标签: javascript jquery vue.js vuejs2 vue-component

我的vue组件是这样的:

<template>
    ...
        <td>{{getDate(item.created_at)}}</td>
    ...

</template>
<script>
    export default {
        ...
        methods: {
            getDate(datetime) {
                let date = new Date(datetime).toJSON().slice(0,10).replace(/-/g,'/')
                return date
            }
        }
    }
</script>

如果我console.log(datetime),结果:2018-03-31 18:23:20

我想只获取日期并将格式更改为:2018年3月31日

我尝试上面的组件,但结果如下:2018/03/31

我尝试使用格式方法和dateformat方法,但它是未定义的

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

最好的方法是使用Vue的filter属性和moment库:

mCheckPermissions

这样,您可以使用管道来格式化每个已渲染的日期:

Vue.filter('formatDate', function(value) {
  if (value) {
    return moment(String(value)).format('MM/DD/YYYY hh:mm')
  }
});

有关更多示例,请查看以下链接:

答案 1 :(得分:1)

没有lib的最佳方式实际上取决于您定位的浏览器。请参阅下面的一些可能性。

&#13;
&#13;
// IE 11 or later
function format(date) {
  var month = date.toLocaleString("en-US", { month: 'short' })
  return date.getDate() + ' ' + month + ' ' + date.getFullYear();
}
// Pretty much every browser
function formatCompat(date) {
  var ms = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  return date.getDate() + ' ' + ms[date.getMonth()] + ' ' + date.getFullYear();
}

var d1 = new Date("2018-04-11T12:00:00.000Z");
console.log(format(d1));
console.log(formatCompat(d1));
var d2 = new Date("2010-01-01T12:00:00.000Z");
console.log(format(d2));
console.log(formatCompat(d2));
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用toLocaleDateString()获取日期。

如果没有以您希望的格式输出,那么您将希望通过使用以下

来创建自己的字符串contcatenation
getDate(datetime) {

let date = new Date(datetime);

let dateString = `${date.getFullYear}/${date.getMonth() + 1}/${date.getDate}`

return date
}