Datetime 日期比较在本地有效,但在heroku上无效

Datetime 日期比较在本地有效,但在heroku上无效,datetime,vue.js,heroku,Datetime,Vue.js,Heroku,在Vuejs应用程序中,我目前有一个每天可用一次的按钮。单击一次后,它将被禁用,直到第二天。这在本地很有效,但在heroku上,比较似乎不起作用 以下是vue组件中的y日期计算值,如果Act是在当前日期00:00之后创建的,则返回true: computed: { ... actedToday() { if (!!this.$store.getters.lastAct) { let now = new Date(); console

在Vuejs应用程序中,我目前有一个每天可用一次的按钮。单击一次后,它将被禁用,直到第二天。这在本地很有效,但在heroku上,比较似乎不起作用

以下是vue组件中的y日期计算值,如果Act是在当前日期00:00之后创建的,则返回true:

  computed: {
    ...
    actedToday() {
      if (!!this.$store.getters.lastAct) {
        let now = new Date();
        console.log('this is now in actedToday computed: ', now);
        let lastActDate = new Date(this.$store.getters.lastAct.created_at);
        console.log('this is last act date in computed actedToday', this.$store.getters.lastAct.created_at);
        console.log('was last Act today? ', lastActDate.getTime() > now.setHours(0,0,0,0));

        return lastActDate.getTime() > now.setHours(0,0,0,0)
      }
    }
  }, 
以下是console.log在本地返回的内容:

this is now in actedToday computed:  Fri Oct 04 2019 15:20:24 GMT-0400 (Eastern Daylight Time)
ActButton.vue?0bb7:31 this is last act date in computed actedToday 2019-10-04T19:20:23.901Z
ActButton.vue?0bb7:32 was last Act today?  true
以下是heroku应用程序中的类似日志:

this is now in actedToday computed:  Fri Oct 04 2019 15:21:18 GMT-0400 (Eastern Daylight Time)
ActButton.vue:31 this is last act date in computed actedToday 2019-10-04T03:30:22.266Z
ActButton.vue:32 was last Act today?  false

在第一个示例中,比较按预期进行。在第二种情况下,虽然两个日期在同一天,但比较结果返回false。

您的问题是由于时区不同而产生的。您的
lastActDate
在祖鲁时间(UTC,注意末尾的
Z
),但您的
actedToday
在EDT。使用
setHours(0,0,0,0)
将为您提供一天的开始,但在同一时区内。因此,您具有以下值:

//本地
现在=2019年10月4日星期五15:20:24 GMT-0400(东部夏时制)
现在。设定时间(0,0,0,0)=2019年10月4日星期五00:00:00 GMT-0400(东部夏时制)
lastActDate=2019-10-04T19:20:23.901Z=2019年10月4日星期五15:20:23.901 GMT-0400(东部夏时制)
//赫罗库
现在=2019年10月4日星期五15:21:18 GMT-0400(东部夏时制)
现在。设定时间(0,0,0,0)=2019年10月4日星期五00:00:00 GMT-0400(东部夏时制)
lastActDate=2019-10-04T03:30:22.266Z=2019年10月3日星期五23:30:22.266 GMT-0400(东部夏时制)

因此,heroku是对的,你的最后一个行动不是“今天”。你应该考虑在所有的日期中使用相同的时区。

< P>你的问题是由于时区的不同而发生的。您的
lastActDate
在祖鲁时间(UTC,注意末尾的
Z
),但您的
actedToday
在EDT。使用
setHours(0,0,0,0)
将为您提供一天的开始,但在同一时区内。因此,您具有以下值:

//本地
现在=2019年10月4日星期五15:20:24 GMT-0400(东部夏时制)
现在。设定时间(0,0,0,0)=2019年10月4日星期五00:00:00 GMT-0400(东部夏时制)
lastActDate=2019-10-04T19:20:23.901Z=2019年10月4日星期五15:20:23.901 GMT-0400(东部夏时制)
//赫罗库
现在=2019年10月4日星期五15:21:18 GMT-0400(东部夏时制)
现在。设定时间(0,0,0,0)=2019年10月4日星期五00:00:00 GMT-0400(东部夏时制)
lastActDate=2019-10-04T03:30:22.266Z=2019年10月3日星期五23:30:22.266 GMT-0400(东部夏时制)

因此,heroku是对的,你的最后一个行动不是“今天”。你应该考虑在所有的日期中使用相同的时区。我想问题是如何在Zulu时间开始一天,或者反过来如何将LastActDate转换为EDT,所以我在比较苹果,对吗?我不确定vue.js和您的项目,但也许可以看看这里:谢谢。我想问题是如何在祖鲁时间开始一天,或者反过来如何将LastActDate转换为EDT,所以我在比较苹果,对吗?我不确定vue.js和您的项目,但也许可以看看这里: