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

Posted

技术标签:

【中文标题】如何在给定日期和时间的情况下让一天倒退 24 小时?【英文标题】:How to make a day go 24 hours back given date and a time? 【发布时间】:2016-01-07 03:42: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 的格式上 【参考方案1】:

如果您要使用 Moment,您可以将您的 _24_hours_before_event 变量设置为以下内容:

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

如果您进行大量日期处理,可能值得考虑。

您可以查看full documentation here。

【讨论】:

如果有人需要 momentjs 只是为了从日期对象中减去 24 小时,他们需要放弃编程并开始编织篮子 我认为你不需要粗鲁。

以上是关于如何在给定日期和时间的情况下让一天倒退 24 小时?的主要内容,如果未能解决你的问题,请参考以下文章

时间日期标识符

js如何去当前时间前一天的时间和后一天

2246=时间日期格式转换(JAVA)

SimpleDateFormat格式化日期

如何计算给定日期的剩余天数、小时数、分钟数和秒数?

使用ivx实现时间倒退效果的经验总结