【问题标题】:Get times in 15 minute increments up to a specific time以 15 分钟为增量获取时间,直至特定时间
【发布时间】:2014-07-02 18:21:41
【问题描述】:

我正在使用 moment.js 并希望创建一个数组,其中包含从当前时间开始以 15 分钟为间隔的所有时间。比如:

当前时间是下午 1:35。下一次是下午 1:45,然后是 2:00、2:15、2:30、2:45 等,直到某个时间点。

我真的不知道该怎么做。有人能指出我正确的方向吗?

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    试试这个:

    function calculate(endTime) {
        var timeStops = [];
        var startTime = moment().add('m', 15 - moment().minute() % 15);
    
        while(startTime <= endTime){
            timeStops.push(new moment(startTime));
            startTime.add('m', 15);
        }
    
        return timeStops;
    }
    

    用法:

    calculate(moment().add('h', 1));
    

    这将返回每一刻钟的时间间隔(如您所说)h:15, h:30, h:45, h+1:00... 它还包含秒,因此您可以将秒设置为 0 ,因为我不确定你是否需要它们。

    You also can see working example on FIDDLE

    【讨论】:

    • 注意,由于写入时刻 API 的时间发生了变化,因此在金额之后指定了时间单位。 startTime.add(15, m);
    【解决方案2】:

    我对@9​​87654323@ 不太熟悉,但这在纯Javascript 中相对容易做到。要获得最近的 15 分钟,您可以use this solution here。然后,如果你把它放在一个日期变量中,你可以随意添加 15 分钟!所以生成的 Javascript 是:

    var d = new Date();
    var result = "";
    for (var idx = 0; idx < 3; idx++)
    {
        var m = (((d.getMinutes() + 7.5)/15 | 0) * 15) % 60;
        var h = ((((d.getMinutes()/105) + .5) | 0) + d.getHours()) % 24;
        d = new Date(d.getYear(), d.getMonth(), d.getDay(), h, m, 0, 0);
    
        if (idx > 0) result += ", ";
        result += ("0" + h).slice(-2) + ":" + ("0" + m).slice(-2);
    
        d = addMinutes(d, 15);
    }
    

    SEE THIS IN A FIDDLE

    注意事项 - 我只是随意加了 3 次 15 分钟。如果您需要不同数量的间隔,您可以计算所需时间与现在之间的差异。另请注意,如果几乎是午夜,我不知道这会做什么,尽管这很容易测试和编码。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2021-01-31
      • 2017-01-24
      • 2011-10-20
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多