如何在给定日期和时间的情况下使一天倒退24小时



我不擅长通知以及处理日期和时间。我试着找到像我这样的东西,但我找不到任何能改变时间的东西,而不仅仅是日期。

var eventTime = Event.date;
var _24_hours_before_event = new Date(eventTime - 86400000);
cordova.plugins.notification.local.schedule({
    id: Math.floor(Math.random() * Number.MAX_VALUE) + 1,
    title: Event.title + "is in 24 hours",
    text: Event.description,
    at: _24_hours_before_event,
    data: {
        eventId: Event._id,
        time: 24
    }
});

正如你所看到的,我正试图向用户发送一个通知,警告他们24小时后会发生一个事件。现在,它知道何时发送通知的方法是用户输入一个时间,保存在Event.date中。然后,给定该时间,它将减去24小时(这是我一直关注的部分)。Event.date看起来像这样2016-01-09T14:00:00.000Z。我试过做这样的date(eventTime-86400000),但没有成功。我需要帮助的是如何让这个2016-01-09T14:00:00.000Z回去一整天。这应该是这样的2016-01-08T14:00:00.000Z。此外,需要明确的是,如果时间是2013年1月6日凌晨5点,那么我希望通知在2013年1日5点出现。谢谢你的帮助。

解决方案

我发现2016-01-08T14:00:00.000Z或Event.date是一个字符串,而不是整数。我把它变成整数的方法是这样做new Date(Event.date)

var eventTime = new Date(Event.date);
var _24_hours_before_event = new Date(eventTime.getTime() - 86400000);
cordova.plugins.notification.local.schedule({
   id: Math.floor(Math.random() * Number.MAX_VALUE) + 1,
   title: Event.title + "is in 24 hours",
   text: Event.description,
   at: _24_hours_before_event,
   data: {
       eventId: Event._id,
       time: 24
   }
});

我还添加了.getTime(),这样就可以从给定的日期中减去86400000。

如果要使用Moment,可以将_24_hours_before_event变量设置为以下值:

moment(eventTime).subtract(1, 'days').toDate();

如果你做了大量的日期处理,这可能是值得考虑的。

您可以在这里查看完整的文档。

相关内容

最新更新