繁体   English   中英

用JavaScript最接近的日期和时间

[英]Closest next day and time in javascript

场景是:只需将鼠标悬停在按钮上,就会看到要约的下一个可用时间。 我用了代码

function closest (num, arr) {
        var closestNext=10000;
            for (var val = 0; val < arr.length; val++) {
              if (arr[val] > num) {
                if (arr[val] < closestNext)
                {
                    closestNext = arr[val];
                    }
              }

            }
            if (closestNext==10000){
                closestNext=arr[0];
            }
            return closestNext;

        }

这样一来,我就可以显示一天(我正在用javascript进行页面加载)。 但是现在的问题是,是否有要约说出上午10点至上午11点之间的每个星期四和星期五。 报价关闭时如何显示该数据? 详细地说:假设每天下午4点有报价。 其余时间悬停在要约显示按钮上,它显示“下一个要约下午4点”。 通过使用数组和当前时间进行计算和显示,我已经解决了这一问题。 现在的问题是,假设要约在上午10点每星期四有一个要约,那么在星期三它必须显示要约在上午10点几要来。

如果我能够正确理解您的问题,则此功能将花费下一个报价日期和时间并返回适当的msg。 这里的天是1-7(周一至周日),时间是24小时格式。

function getNextOffer(offer_day, offer_time) //offer_day = 4, offer_time = 16
{
    var msg = '';
    var today = new Date();
    var day_today = today.getDay();
    var time_today = today.getHours()

    if(offer_day != day_today) //different day
    {
        msg = "thurs " + offer_time; //this msg can be manipulated
    }
    else
    {
        if(time_today > offer_time) //time elapsed
        {
            msg = "next thurs " + offer_time;
        }
        else
        {
            msg = "next offer by " + offer_time;
        }
    }

    return msg;
}

编辑:对于多个值更改了逻辑一点

//example array of offers [Fri, 12:00pm], [Thurs, 1:00pm], [Sat, 7:00pm]
var days = [[5, 12], [4, 13], [6, 19]];

function getNextOffer(days)
{
    var msg = '';
    var today = new Date();
    var day_today = today.getDay();
    var time_today = today.getHours();
    var pre_offer_day = 8;
    var pre_offer_time = 25;

    for(i=0; i < days.length; i++)
    {
        var offer_day = days[i][0];
        var offer_time = days[i][1];

        if(pre_offer_day >= offer_day)
        {
            if(offer_day > day_today)
            {
                msg = "next " +  offer_day + " at " + offer_time;
                pre_offer_day = offer_day;
                pre_offer_time = offer_time;
            }
            else if(offer_day == day_today && offer_time > time_today)
            {
                msg = "next " +  offer_day + " at " + offer_time;
                pre_offer_day = offer_day;
                pre_offer_time = offer_time;
            }
        }
    }

    \\if no more offers in this week set the default msg
    if(pre_offer_day == 8 && pre_offer_time == 25)
    {
        msg = msg = "next offer by thurs 10am";
    }
    return msg;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM