【发布时间】:2026-02-17 16:55:02
【问题描述】:
我不熟悉通知以及处理日期和时间。我已经尝试找到类似我的东西,但我找不到任何改变时间而不仅仅是日期的东西。
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:00,那么我希望通知显示在 2013 年 1 月 5 日凌晨 5:00。感谢您的帮助。
解决方案
我发现 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。
【问题讨论】:
-
but that didn't work- 它以什么方式不起作用? 86400000ms 是一天,所以你的数学是正确的。请详细说明您认为这不起作用的原因 -
当我的意思是“它不起作用”时,我在谈论它没有在前一天发送通知。它根本没有发送它。 @JaromandaX
-
所以这段代码在某种服务器上运行
-
...哦,等等
cordova.plugins.notification.local.schedule...没关系:p -
您能否确认
_24_hours_before_event最终是一个有效的 Date 对象 - 如果不是,问题可能出在Event.date的格式上
标签: javascript date time push-notification localnotification