首页 > 解决方案 > 如何在 VueJs 中使用 Javascript 获取过去的月份日期?

问题描述

我对 Vue 有点陌生,想知道如何获得过去一个月的日期:我有这个代码:

import SomeTable from "./table/SomeTable";

export default {
    name: "Cabinets",
    components: {SomeTable},
    data() {
        return {
            defaultColumns: [
                'id',
                'serialNumber'
            ],

            defaultStartDate: new Date(),
            defaultEndDate: new Date('2019-10-07')
        }
    },
    props: {
        startDate: {type: Date, required: false},
        endDate: {type: Date, required: false},
    }
}

</script>

然后我将defaultStartDateanddefaultEndDate放入SomeTable元素中,如下所示:

 <some-table :start-date="defaultStartDate" :end-date="defaultEndDate" :default-columns="defaultColumns"></some-table>

然后返回正确的今天的开始日期以及设置的日期。但是当我尝试做这样的事情时:

defaultEndDate: new Date().getFullYear() + '-' + new Date().getMonth() + '-' + new Date().getDate()

我的本地环境变成空白并出现各种错误。我认为这是因为我不能在 Vue 的那个地方使用 Javascript?但同样,我真的不确定 Vue 是如何工作的,并且通过谷歌搜索找不到太多关于它的信息。那么我怎么能使用 Javascript 来做到这一点,或者即使 Vue 有一个巧妙的技巧呢?

编辑:我得到的错误是:

data() 中的错误:“TypeError: Date().getFullYear 不是函数”

但随后我在 Vue 中使用了所有的 javascript 函数。并且

无效的道具:道具“endDate”的类型检查失败。预期日期,得到值为“2019-9-5”的字符串。

标签: javascriptvue.js

解决方案


在您的代码中,endDate: {type: Date, required: false},手段endDate应该是日期类型。

因此,您需要将计算值转换为Date如下所示:

defaultEndDate: new Date(`${(new Date()).getFullYear()}-${(new Date()).getMonth()}-${(new Date()).getDate()}`)

编辑: 你需要考虑月份是一月(0)。使用上面的方法,一月份的时候会报错。我认为使用computed下面的值可能会更好;

computed: {
  defaultEndDate() {
     const now = new Date();
     now.setMonth(now.getMonth() - 1);
     return new Date(now.toJSON().slice(0, 10));
  }
}

推荐阅读