JavaScript-在活动的指定时间前30分钟关闭活动预定

我有一个表格,用于根据时间表预订多个事件。已定义每个事件的开始时间。

例子:

  • 赛事名称:足球
  • 时间:17:00

要求:如果活动相对于当前时间还剩30分钟,则用户无法预订此活动。如何使用JavaScript做到这一点?

保利先生

setInterval 除非您的服务器上有一个推送实时更新的消息传递框架,否则,这是必经之路。

LIVE DEMO

注意:以下代码是该演示的摘录。

window.setInterval(function () {
    $(events).each(function (index, event) {
        var currentTime = new Date().getTime();
        var expirationTime = event.time.addMinutes(-30).getTime();
        event.expired = expirationTime - currentTime <= 0;
    });
    createEvents(events); // Destroy and recreate view.
}, updateFrequency);

演示中的代码:

// ----------------------------------------------------------
// Utility and prototype functions.
// ----------------------------------------------------------

// Date prototype methods.
Date.prototype.formatTime = function () {
    var hours = this.getHours();
    var minutes = this.getMinutes();
    var period = hours > 11 ? 'PM' : 'AM';

    if (hours > 12) {
        hours -= 12;
    }
    if (hours < 10) {
        hours = '0' + hours;
    }
    if (minutes < 10) {
        minutes = '0' + minutes;
    }

    return hours + ':' + minutes + ' ' + period;
};

Date.prototype.addMinutes = function (min) {
    var clone = new Date(this.getTime());
    return new Date(clone.getTime() + min * 60000);
};

// Utilities functions to generate times for current day.
var getHourMinSecMsOfDay = function(hour, min, sec, ms) {
    var now = new Date();
    now.setHours(hour, min, sec, ms);
    return now;
};

var getStartOfDay = function() {
    return getHourMinSecMsOfDay(0, 0, 0, 0);
};

var getHourOfDay = function(hour) {
    return getHourMinSecMsOfDay(hour, 0, 0, 0);
};

var getHourMinOfDay = function(hour, min) {
    return getHourMinSecMsOfDay(hour, min, 0, 0);
};

// ----------------------------------------------------------
// Aplication variable and function declarations.
// ----------------------------------------------------------

// Data
var events = [{
    'name': 'Hockey',
    'time': getHourMinOfDay(9, 30),
    'expired': false
}, {
    'name': 'Baseball',
    'time': getHourMinOfDay(11, 59),
    'expired': false
}, {
    'name': 'Football',
    'time': getHourOfDay(17),
    'expired': false
}, {
    'name': 'Basketball',
    'time': getHourMinOfDay(20, 25),
    'expired': false
}];

var updateFrequency = 3000; // Every 3 seconds

// Displays an event.
var displayEvent = function(event) {
    var date = event.time.formatTime();
    var wrapper = $('<div>').addClass('event');
    $('<p>').text(event.name).appendTo(wrapper);
    $('<p>').text(date).appendTo(wrapper);
    var expired = $('<p>').appendTo(wrapper);
    if (event.expired) {
        expired.addClass('expired');
        expired.removeClass('active');
        expired.text('Closed');
    } else {
        expired.addClass('active');
        expired.removeClass('expired');
        expired.text('Available');
    }
    return wrapper.clone();
}

// Remove and re-create the events.
var createEvents = function(events) {
    $('#events').empty();
    $(events).each(function (index, event) {
        $('#events').append(displayEvent(event));
    });
};

// Validate the status of all the events.
var validateStatus = function(events) {
    $(events).each(function (index, event) {
        event.expired = event.time.addMinutes(-30).getTime() - new Date().getTime() <= 0;
    });
    createEvents(events);
};

// ----------------------------------------------------------
// Begin execution of application.
// ----------------------------------------------------------

// Update event status every 3 seconds.
window.setInterval(function () {
    validateStatus(events);
}, updateFrequency);

// Validate and create events.
validateStatus(events);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每天在特定时间段内间隔30分钟进行MySQL事件调度

来自分类Dev

Javascript:向上舍入5分钟

来自分类Dev

在30分钟内的特定时间每分钟执行一次cron作业

来自分类Dev

1分钟后如何使用javascript刷新Repeater?

来自分类Dev

剩余时间需要5分钟-Javascript

来自分类Dev

每15分钟提交表格(PHP / Javascript)

来自分类Dev

转换日期时间,并使用javascript在其中添加30分钟

来自分类Dev

将时间分成30分钟

来自分类Dev

1分钟倒计时Javascript

来自分类Dev

通过Javascript错误将考试时间设置为30分钟?

来自分类Dev

从当前日期和时间中减去5分钟javascript

来自分类Dev

移动30分钟前的文件

来自分类Dev

用Javascript将当前时间增加一分钟

来自分类Dev

时间到凌晨5分钟时,JavaScript重定向到另一个页面

来自分类Dev

按ID分组,按时间分组(每个活动5分钟以内),在R中查找活动的时差

来自分类Dev

Javascript以三分钟的间隔递增

来自分类Dev

显示当前时间前30分钟

来自分类Dev

如果闲置超过30分钟,如何关闭Linux?

来自分类Dev

每天在特定时间段内间隔30分钟进行MySQL事件调度

来自分类Dev

使用telinit在30分钟内关闭我的系统

来自分类Dev

查找30分钟前的文件

来自分类Dev

在特定时间段内禁止用户在网站上进行任何活动:javascript

来自分类Dev

基于时间的javascript,在大约30分钟的时间内产生空白响应

来自分类Dev

在Excel中确定指定时间是否在目标时间的15分钟内

来自分类Dev

以ISO 8601格式计算在指定时间戳(GMT)之前15/30分钟的代码

来自分类Dev

外接显示器每5-10分钟关闭几秒钟

来自分类Dev

Javascript日期减去30分钟/完整日历调整大小错误

来自分类Dev

用Javascript将当前时间增加一分钟

来自分类Dev

如何在javascript中将30分钟添加到指定时间(最小和最大时间)

Related 相关文章

  1. 1

    每天在特定时间段内间隔30分钟进行MySQL事件调度

  2. 2

    Javascript:向上舍入5分钟

  3. 3

    在30分钟内的特定时间每分钟执行一次cron作业

  4. 4

    1分钟后如何使用javascript刷新Repeater?

  5. 5

    剩余时间需要5分钟-Javascript

  6. 6

    每15分钟提交表格(PHP / Javascript)

  7. 7

    转换日期时间,并使用javascript在其中添加30分钟

  8. 8

    将时间分成30分钟

  9. 9

    1分钟倒计时Javascript

  10. 10

    通过Javascript错误将考试时间设置为30分钟?

  11. 11

    从当前日期和时间中减去5分钟javascript

  12. 12

    移动30分钟前的文件

  13. 13

    用Javascript将当前时间增加一分钟

  14. 14

    时间到凌晨5分钟时,JavaScript重定向到另一个页面

  15. 15

    按ID分组,按时间分组(每个活动5分钟以内),在R中查找活动的时差

  16. 16

    Javascript以三分钟的间隔递增

  17. 17

    显示当前时间前30分钟

  18. 18

    如果闲置超过30分钟,如何关闭Linux?

  19. 19

    每天在特定时间段内间隔30分钟进行MySQL事件调度

  20. 20

    使用telinit在30分钟内关闭我的系统

  21. 21

    查找30分钟前的文件

  22. 22

    在特定时间段内禁止用户在网站上进行任何活动:javascript

  23. 23

    基于时间的javascript,在大约30分钟的时间内产生空白响应

  24. 24

    在Excel中确定指定时间是否在目标时间的15分钟内

  25. 25

    以ISO 8601格式计算在指定时间戳(GMT)之前15/30分钟的代码

  26. 26

    外接显示器每5-10分钟关闭几秒钟

  27. 27

    Javascript日期减去30分钟/完整日历调整大小错误

  28. 28

    用Javascript将当前时间增加一分钟

  29. 29

    如何在javascript中将30分钟添加到指定时间(最小和最大时间)

热门标签

归档