Date 如何在Vue.js中创建日期(现在)以在计算属性中使用?

Date 如何在Vue.js中创建日期(现在)以在计算属性中使用?,date,vue.js,computed-properties,Date,Vue.js,Computed Properties,我有一系列带有预先格式化日期的日历事件:20190517T010000Z 我需要根据以下内容过滤阵列: 1) 未来事件(发生的任何事件大于现在的) 2) 过去的事件(小于现在发生的任何事件) 3) 过去7天内创建的新事件(现在-7天) 下面我有一个硬编码的示例-但是现在需要动态,并且基于用户的系统时间。我不知道现在如何以与我在my array中获取的datetime格式相同的格式获取。另外,我不知道它应该在我的代码中的什么位置(在单独的JS文件或Vue组件中) 一旦我让它在下面列出的组件中工作,

我有一系列带有预先格式化日期的日历事件:20190517T010000Z

我需要根据以下内容过滤阵列:

1) 未来事件(发生的任何事件大于现在的

2) 过去的事件(小于
现在发生的任何事件

3) 过去7天内创建的新事件(
现在
-7天)

下面我有一个硬编码的示例-但是现在需要
动态,并且基于用户的系统时间。我不知道现在如何以与我在my array中获取的datetime格式相同的格式获取
。另外,我不知道它应该在我的代码中的什么位置(在单独的JS文件或Vue组件中)

一旦我让它在下面列出的组件中工作,它将被移动到VUEX Getter

<template>
    <div class="text-left m-4 p-4">
        <div>
            Total Number Events: {{ allEvents.length }}
        </div>
        <div>
            Events Created In Last 7 Days: {{ createdEvents }}
        </div>
        <div>
            Future Events: {{ futureEvents }}
        </div>
        <div>
            Past Events: {{ pastEvents }}
        </div>
    </div>
</template>

<script>
import { mapState } from 'vuex'

export default {
  computed: {
    ...mapState(['allEvents']),

    futureEvents () {
      return this.$store.state.allEvents.filter(allEvents => allEvents.dtstart >= '20190517T010000Z').length
    },

    pastEvents () {
      return this.$store.state.allEvents.filter(allEvents => allEvents.dtstart <= '20190517T235900Z').length
    },

    createdEvents () {
      return this.$store.state.allEvents.filter(
        allEvents => allEvents.created >= '20190511T235900Z' && allEvents.created <= '20190517T235900Z' )
        .length
    }
  },
}
</script>

事件总数:{{allEvents.length}
在过去7天中创建的事件:{{createdEvents}
未来事件:{{futureEvents}}
过去事件:{{PasteEvents}}
从“vuex”导入{mapState}
导出默认值{
计算:{
…映射状态(['allEvents']),
未来事件(){
返回此.$store.state.allEvents.filter(allEvents=>allEvents.dtstart>='20190517T010000Z')。长度
},
糊状喷口(){

返回此.$store.state.allEvents.filter(allEvents=>allEvents.dtstart allEvents.created>='20190511T235900Z'&&allEvents.created所有日期-时间对象都应作为UNIX时间戳(自1970年1月1日起的UTC秒数)保留。这将允许您比较不同系统的时间,无论时区如何

如果Vuex存储区中的事件是以UNIX时间戳形式存储的,则以下代码段应为您提供所需的动态行为

我在组件的数据中创建了一个
now
属性。该属性每秒更新一次,导致计算属性刷新

此外,如果Vuex存储区中的
allEvents
属性更新,计算出的属性也将刷新

<template>
    <div class="text-left m-4 p-4">
        <div>
            Total Number Events: {{ allEvents.length }}
        </div>
        <div>
            Events Created In Last 7 Days: {{ createdEvents }}
        </div>
        <div>
            Future Events: {{ futureEvents }}
        </div>
        <div>
            Past Events: {{ pastEvents }}
        </div>
    </div>
</template>

<script>
    import { mapState } from 'vuex'
    export default {
        data () {
            return {
                now: new Date().getUTCSeconds()
            }
        },
        created () {
            this.scheduleUpdateNow();
        },
        methods: {
            updateNow() {
                this.now = new Date().getUTCSeconds();
                this.scheduleUpdateNow();
            },
            scheduleUpdateNow() {
                setTimeout(this.updateNow, 1000);
            }
        },
        computed: {
            ...mapState(['allEvents']),

            futureEvents () {
                return this.$store.state.allEvents.filter(allEvents => allEvents.dtstart > this.now).length
            },

            pastEvents () {
                return this.$store.state.allEvents.filter(allEvents => allEvents.dtstart <= this.now).length
            },

            createdEvents () {
                return this.$store.state.allEvents.filter(
                    allEvents => allEvents.created >= this.now && allEvents.created <= this.now).length
            }
        }
    }
</script>

事件总数:{{allEvents.length}
在过去7天中创建的事件:{{createdEvents}
未来事件:{{futureEvents}}
过去事件:{{PasteEvents}}
从“vuex”导入{mapState}
导出默认值{
数据(){
返回{
现在:new Date().getUTCSeconds()
}
},
创建(){
this.scheduleUpdateNow();
},
方法:{
updateNow(){
this.now=new Date().getUTCSeconds();
this.scheduleUpdateNow();
},
scheduleUpdateNow(){
setTimeout(this.updateNow,1000);
}
},
计算:{
…映射状态(['allEvents']),
未来事件(){
返回此.store.state.allEvents.filter(allEvents=>allEvents.dtstart>this.now).length
},
糊状喷口(){

返回此.$store.state.allEvents.filter(allEvents=>allEvents.dtstart allEvents.created>=this.now&&allEvents.created P.S.我不确定上一个计算函数
createdEvents
在做什么-我将逻辑保留为“原样”。它似乎可以找到现在创建的所有事件-但这不太可能与“now”匹配非常具体!感谢您的回答。
createdEvents
用于过滤在两个日期之间创建的事件-带有“end”日期是现在,可以追溯到7天。一旦我有了一个现在的日期,计算应该不会太难。感谢这一点…我不知道确切地把现在的日期时间放在哪里,它通过日历系统预先格式化为
yyymmddthhmmsz
…在哪里重新格式化/重新格式化传入的日期时间?也许当你收到从日历系统中,将字符串解析为日期对象,然后将日期存储为UNIX时间戳。